/* Exemplu simplu in care folosim o comunicare unidirectionala prin pipe. Fiul * ii scrie parintelui un int si un string, iar parintele le citeste is le * afiseaza. */ #include #include #include #include main() { int p1[2]; int n, i; char str[] = "test"; pipe(p1); if (fork()>0) { // suntem in parinte close(p1[1]); wait(); i = read(p1[0], &n, sizeof(int)); if (i<0) perror("Parinte - err la read:"); i = read(p1[0], str, sizeof(str)); if (i<0) perror("Parinte - err la read:"); printf("Parinte - am citit %d si %s\n", n, str); close(p1[0]); } else { // suntem in fiu close(p1[0]); n = 10; i = write(p1[1], &n, sizeof(int)); if (i<0) perror("Fiu - err la write:"); i = write(p1[1], str, strlen(str)+1); if (i<0) perror("Fiu - err la write:"); close(p1[1]); exit(0); } }