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() { sleep(1); } void proceso_2() { 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) { } 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()