Advertisement
Guest User

Untitled

a guest
May 24th, 2015
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5.  
  6. int main() {
  7. int n=rand()%1000;
  8. int proces;
  9. int p[2];int q[2];
  10. pipe(p);pipe(q);
  11. int a[2];
  12. a[0]=n;
  13. a[1]=1;
  14. int ok=0;
  15. printf("n initially is %d\n",a[0]);
  16. proces=fork();
  17. write(q[1],&a,2*sizeof(int));
  18. if(proces==0){///in child
  19. while(a[0]>10){
  20. read(p[0],&a,2*sizeof(int));
  21. a[0]=a[0]-a[1];
  22. printf("in child %d n: %d\n",getpid(),a[0]);
  23. printf("subtracted: %d which is now ",a[1]);
  24. a[1]=a[1]*10;
  25. printf("%d \n",a[1]);
  26. write(q[1],&a,2*sizeof(int));
  27.  
  28. }
  29. exit(0);
  30. }
  31. else{ //in parent
  32.  
  33. while(a[0]>10){
  34. read(q[0],&a,2*sizeof(int));
  35. ok=1;
  36. a[0]=a[0]-a[1];
  37. printf("in parent %d n: %d\n",getpid(),a[0]);
  38. printf("subtracted: %d which is now ",a[1]);
  39. a[1]=a[1]*10;
  40. printf("%d \n",a[1]);
  41. write(p[1],&a,2*sizeof(int));
  42. }
  43.  
  44. }
  45. wait();
  46. printf("Final number has reached: %d\n",a[0]);
  47. close(p[1]);
  48. close(p[0]);
  49. close(q[1]);
  50. close(q[0]);
  51.  
  52. return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement