#include #include #include #include #define MAXLINE 1024 //ipc-pipe-1.c //esecuzione: ./ipc-pipe-1 // int main(int argc, char *argv[]) { int n, pfd[2]; pid_t pid; char line[MAXLINE], msg[80]; strcpy(msg,argv[1]); /* copia la stringa data in linea */ if (pipe(pfd) < 0) {perror("pipe"); exit(0);} if ( (pid = fork()) < 0) {perror("pipe"); exit(0);} else if (pid > 0) { /* client = padre */ close(pfd[0]); printf("sono il padre. Sto scrivendo il messaggio nella pipe\n"); sleep(2); /* aspetto a scrivere */ write(pfd[1], msg, sizeof(msg)); wait(); } else { /* server = figlio */ close(pfd[1]); printf("sono il processo figlio. Aspetto il messaggio\n"); n = read(pfd[0], line, MAXLINE); printf("ricevuto: %s\n", line); } exit(0); }