#include #include #include #include void leggi_dalla_pipe (int file) { FILE *f; int c; f = fdopen (file, "r"); while ((c = fgetc (f)) != EOF) putchar (c); fclose (f); } /* Scrittura di un testo qualsiasi nella pipe */ void scrivi_nella_pipe (int file) { FILE *f; f = fdopen (file, "w"); fprintf (f, "Messaggio!\n"); fclose (f); } int main (void) { pid_t pid; int mypipe[2]; /* Crea la pipe. */ if (pipe (mypipe)) { fprintf (stderr, "Pipe non creata.\n"); return EXIT_FAILURE; } pid = fork (); if (pid < 0) { fprintf (stderr, "Fork fallita.\n"); return EXIT_FAILURE; } if (pid == 0) { /* Processo figlio: chiudere la parte di scrittura */ close (mypipe[1]); leggi_dalla_pipe (mypipe[0]); return EXIT_SUCCESS; } else { /* Processo padre: chiudere la parte di lettura */ close (mypipe[0]); scrivi_nella_pipe (mypipe[1]); return EXIT_SUCCESS; } }