Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- int main() {
- int n=rand()%1000;
- int proces;
- int p[2];int q[2];
- pipe(p);pipe(q);
- int a[2];
- a[0]=n;
- a[1]=1;
- int ok=0;
- printf("n initially is %d\n",a[0]);
- proces=fork();
- write(q[1],&a,2*sizeof(int));
- if(proces==0){///in child
- while(a[0]>10){
- read(p[0],&a,2*sizeof(int));
- a[0]=a[0]-a[1];
- printf("in child %d n: %d\n",getpid(),a[0]);
- printf("subtracted: %d which is now ",a[1]);
- a[1]=a[1]*10;
- printf("%d \n",a[1]);
- write(q[1],&a,2*sizeof(int));
- }
- exit(0);
- }
- else{ //in parent
- while(a[0]>10){
- read(q[0],&a,2*sizeof(int));
- ok=1;
- a[0]=a[0]-a[1];
- printf("in parent %d n: %d\n",getpid(),a[0]);
- printf("subtracted: %d which is now ",a[1]);
- a[1]=a[1]*10;
- printf("%d \n",a[1]);
- write(p[1],&a,2*sizeof(int));
- }
- }
- wait();
- printf("Final number has reached: %d\n",a[0]);
- close(p[1]);
- close(p[0]);
- close(q[1]);
- close(q[0]);
- return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement