Un proceso padre tiene que generar dos procesos hijos.
El padre tiene que leer los datos de stdin ( por teclado) y tiene que enviarlos a los hijos.
El hijo 1: -Sacará por pantalla el texto leído del padre, a la salida estándar.
El hijo 2: -Sacará lo leído a un fichero.
Cuando el padre reciba “exit” como entrada, enviará señales de terminación a los hijos y se cerrará.
Código C:
Ver original#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
void proceso_1()
{
printf ("Somos el primogénito\n"); sleep(1);
}
void proceso_2()
{
printf ("Somos el segundo...\n"); sleep(5);
}
int main()
{
pid_t hijo1;
pid_t hijo2;
int faltan;
int status;
pid_t cambiado;
char pal;
hijo1 = fork();
if (hijo1 == 0)
{
proceso_1();
}
elseif (hijo1 > 0)
{
printf ("Proceso padre, a por otro hijo\n"); printf( "Introduzca una palabra: " ); }
hijo2 = fork();
if (hijo2==0)
{
proceso_2();
}
else
{
faltan = 2;
do
{
cambiado = wait(&status);
if (WIFEXITED(status))
{
faltan--;
if(cambiado == hijo1)
{
else if (cambiado == hijo2)
}
}
} while (faltan > 0);
}
}
Esta es la idea inicial... Obviamente se acerca a como debería de ser el código final pero todavía hay que editar bastante...
Un saludo y espero vuestras ideas para llevar todo esto a buen puerto :P
Edit1: Me comentan que es mejor hacerlo utilizando pipe() en vez de fork()