Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <sys/wait.h>
- int main(int argc, char const *argv[]) {
- int p1[2],p2[2],p3[2];
- pipe(p1); pipe(p2); pipe(p3);
- pid_t fiu = fork();
- pid_t fiu2 = fork();
- if(fiu==-1) {perror("nu"); exit(0);}
- if(fiu2==-1) {perror("nu"); exit(1);}
- if(fiu==0 && fiu2!=0)
- {
- printf("fiu1\n");
- close(p1[1]); close(p3[1]);
- close(p2[0]); close(p3[0]);
- char c;
- int r,w;
- while(1){
- r=read(p1[0],&c,1);
- if(r==-1) {perror("nu a putut citi date.txt"); exit(2);}
- if(c>='a' && c<='z')
- w=write(p2[1],&c,1);
- if(w==-1) {perror("nu a putut fi scris pe canalul dintre fiu1 si tata"); exit(2);}
- if(c=='\n') {write(p2[1],&c,1);break;}
- }
- close(p1[0]);
- close(p2[1]);
- }
- else if(fiu2==0 && fiu!=0)
- {
- printf("fiu2\n");
- int fd;
- int nr[100];
- for(int i=0;i<99;i++)nr[i]=0;
- if(-1==(fd=open("statistica.txt",O_CREAT | O_TRUNC | O_WRONLY,0600))) {perror("nu"); exit(3);}
- char c;
- int a;
- while(1){
- read(p2[0],&c,1);
- a=c-'a';
- nr[a]++;
- if(c=='\n') {break;}
- }
- char nrLitDif='0';
- int n='z'-'a'+1;
- for(int j=0;j<n;j++)
- {
- if(nr[j]>0)
- {
- nrLitDif++;
- c='a'+j;
- write(fd,&c,1);
- c=' ';
- write(fd,&c,1);
- c=nr[j]+'0';
- write(fd,&c,1);
- c='\n';
- write(fd,&c,1);
- // printf("%c %d\n",'a'+j,nr[j]);
- }
- }
- close(p2[1]);
- write(p3[1],&nrLitDif,1);
- close(p3[1]);
- }
- else if(fiu!=0 && fiu2!=0){
- printf("tata\n");
- close(p1[0]);
- close(p2[0]);
- close(p2[1]);
- close(p3[1]);
- int fd;
- if(-1==(fd=open("date.txt",O_RDONLY))) {perror("nu a putut citi date.txt"); exit(2);}
- char c;
- int r,w;
- while(1){
- r=read(fd,&c,1);
- if(r==-1) {perror("nu a putut citi date.txt"); exit(2);}
- w=write(p1[1],&c,1);
- if(w==-1) {perror("nu a putut fi scris pe canalul dintre fiu1 si tata"); exit(2);}
- if(c=='\n') break;
- }
- close(p1[1]);
- read(p3[0],&c,1);
- printf("NUMARUL DE CARA DIFERITE %c\n",c );
- close(p3[0]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement