Título: Dudas con Pipes Publicado por: javivi6969 en 23 Diciembre 2012, 11:22 am Hola, tengo grandes dudas con la comunicacion por pipes, los dup, etc...en definitiva que no tengo muy claro cuando se ejecuta el padre o cuando el hijo, etc...
En la uni nos han puesto este codigo y la verdad es que me despista bastante, sobre todo los cierres de los canales, que no logro cogerlo claramente: #include <stdio.h> #include <signal.h> #include <unistd.h> int n, seguir; void rut1() {printf(“Señal 1\n”); seguir=0; signal (SIGUSR1, rut1);} void rut2() {printf(“Señal 2\n”); seguir=1; n++; signal (SIGUSR2, rut2);} void main() { int p1[2],i; seguir = 1; n = 0; pipe(p1); signal (SIGUSR1, rut1); signal (SIGUSR2, rut2); switch(fork()) { case 0: close(1); dup(p1[1]); close(p1[0]); close (p1[1]); while(seguir); pause(); write(1, &n, sizeof(int)); break; default: close(0); dup(p1[0]); close(p1[0]); close (p1[1]); read(0, &i, sizeof(int)); printf(“He recibido un %d”, i); while(seguir); } printf(“El valor de n es %d”, n); } Toda ayuda sera bien recibida ;) Muchas gracias. Fran |