Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include "a2_helper.h"
- void p1();
- void p2();
- void p3();
- void p4();
- void p5();
- void p6();
- void p7();
- void p8();
- void p9();
- void runP_and_fork1(int number,void f1())
- {
- info(BEGIN, number, 0);
- int pidP1=fork();
- if(pidP1==-1)
- {
- perror("Error at fork!");
- }
- else if(pidP1==0)
- {
- f1();
- }
- else
- {
- wait(NULL);
- info(END, number, 0);
- }
- }
- void runP_and_fork2(int number,void f1(),void f2())
- {
- info(BEGIN, number, 0);
- int pidP1=fork();
- if(pidP1==-1)
- {
- perror("Error at fork!");
- }
- else if(pidP1==0)
- {
- f1();
- }
- else
- {
- int pidP2=fork();
- if(pidP2==-1)
- {
- perror("Error at fork!");
- }
- else if(pidP2==0)
- {
- f2();
- }
- else
- {
- wait(NULL);
- wait(NULL);
- info(END, number, 0);
- }
- }
- }
- void p1()
- {
- runP_and_fork2(1,p2,p3);
- }
- void p2()
- {
- runP_and_fork2(2,p4,p5);
- }
- void p3()
- {
- runP_and_fork1(3,p7);
- }
- void p4()
- {
- info(BEGIN, 4, 0);
- info(END, 4, 0);
- }
- void p5()
- {
- runP_and_fork2(5,p6,p8);
- }
- void p6()
- {
- runP_and_fork1(6,p9);
- }
- void p7()
- {
- info(BEGIN, 7, 0);
- info(END, 7, 0);
- }
- void p8()
- {
- info(BEGIN, 8, 0);
- info(END, 8, 0);
- }
- void p9()
- {
- info(BEGIN, 9, 0);
- info(END, 9, 0);
- }
- int main(){
- init();
- p1();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement