Procese 3: Comunicare prin pipes
Să se scrie un program C ce conţine două procese (părinte + fiu). Procesul părinte deschide
un fişier text ce conţine cifre, litere mari, litere mici şi îl trimite printr-un pipe procesului
fiu. Procesul fiu realizează o statistică cu numărul de caractere primite din fiecare
categorie (cifre, litere mari, litere mici) şi la final va afişa statistica respectivă.
Model
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> int main(void){ int pfd[2], nr_bytes; pid_t pid_fiu; char mesaj[20] = "Hello world!"; char readbuffer[80]; pipe(pfd); if((pid_fiu = fork()) == -1) { perror("fork"); exit(1); } if(pid_fiu == 0) { //procesul fiu închide descriptorul de scriere close(pfd[1]); //citeste mesajul din pipe nr_bytes = read(pfd[0], readbuffer, sizeof(readbuffer)); //si îl afiseaza printf("Received string: %s", readbuffer); } else { //procesul parinte închide descriptorul de //citire close(pfd[0]); //trimite mesajul prin descriptorul de scriere write(pfd[1], mesaj, (strlen(mesaj)+1)); exit(0); } return(0); }