Advertisement
Guest User

Untitled

a guest
Apr 29th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.37 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <sys/types.h>
  4. #include <sys/wait.h>
  5. #include "a2_helper.h"
  6. void p1();
  7. void p2();
  8. void p3();
  9. void p4();
  10. void p5();
  11. void p6();
  12. void p7();
  13. void p8();
  14. void p9();
  15. void runP_and_fork1(int number,void f1())
  16. {
  17.     info(BEGIN, number, 0);
  18.     int pidP1=fork();
  19.     if(pidP1==-1)
  20.     {
  21.         perror("Error at fork!");
  22.     }
  23.     else if(pidP1==0)
  24.     {
  25.         f1();
  26.     }
  27.     else
  28.     {
  29.         wait(NULL);
  30.         info(END, number, 0);
  31.     }
  32. }
  33. void runP_and_fork2(int number,void f1(),void f2())
  34. {
  35.     info(BEGIN, number, 0);
  36.     int pidP1=fork();
  37.     if(pidP1==-1)
  38.     {
  39.         perror("Error at fork!");
  40.     }
  41.     else if(pidP1==0)
  42.     {
  43.         f1();
  44.     }
  45.     else
  46.     {
  47.         int pidP2=fork();
  48.         if(pidP2==-1)
  49.         {
  50.             perror("Error at fork!");
  51.         }
  52.         else if(pidP2==0)
  53.         {
  54.             f2();
  55.         }
  56.         else
  57.         {
  58.             wait(NULL);
  59.             wait(NULL);
  60.             info(END, number, 0);
  61.         }
  62.     }
  63. }
  64. void p1()
  65. {
  66.     runP_and_fork2(1,p2,p3);
  67. }
  68. void p2()
  69. {
  70.     runP_and_fork2(2,p4,p5);
  71. }
  72.  
  73. void p3()
  74. {
  75.     runP_and_fork1(3,p7);
  76. }
  77. void p4()
  78. {
  79.     info(BEGIN, 4, 0);
  80.    
  81.     info(END, 4, 0);
  82. }
  83. void p5()
  84. {
  85.     runP_and_fork2(5,p6,p8);
  86. }
  87. void p6()
  88. {
  89.     runP_and_fork1(6,p9);
  90. }
  91. void p7()
  92. {
  93.     info(BEGIN, 7, 0);
  94.    
  95.     info(END, 7, 0);
  96. }
  97. void p8()
  98. {
  99.     info(BEGIN, 8, 0);
  100.    
  101.     info(END, 8, 0);
  102. }
  103. void p9()
  104. {
  105.     info(BEGIN, 9, 0);
  106.    
  107.     info(END, 9, 0);
  108. }
  109.  
  110. int main(){
  111.     init();
  112.     p1();
  113.     return 0;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement