Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <signal.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <fcntl.h>
- #include <unistd.h>
- int fdTS[2], fdTC[2];
- void pDie(int p)
- {
- close(fdTS[0]);
- close(fdTS[1]);
- close(fdTC[0]);
- close(fdTC[1]);
- printf("\nBye Now\n");
- exit(0);
- }
- void chDie(int p)
- {
- wait(0);
- signal(SIGCHLD, chDie);
- }
- int main()
- {
- int ch;
- signal(SIGINT, pDie);
- signal(SIGCHLD, chDie);
- pipe(fdTS);
- pipe(fdTC);
- while(1)
- {
- ch = fork();
- if(ch == 0)
- {
- printf(" ---- New child ---- \n");
- int ok = 1;
- while(ok)
- {
- int c;
- printf("Enter number:");
- scanf("%d", &c);
- write(fdTS[1], &c, sizeof(int));
- read(fdTC[0], &ok, sizeof(int));
- }
- int sum;
- read(fdTC[0], &sum, sizeof(int));
- printf("Sum: %d\n", sum);
- exit(0);
- }
- else if( ch > 0)
- {
- int numb = 0, sum = 0;
- do {
- sum = sum + numb;
- read(fdTS[0], &numb, sizeof(int));
- if(numb > 0)
- {
- int ok = 1;
- write(fdTC[1], &ok, sizeof(int));
- }
- }while(numb > 0);
- int ok = 0;
- write(fdTC[1], &ok, sizeof(int));
- write(fdTC[1], &sum, sizeof(int));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement