Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- // header funzioni di sistema
- int fork();
- int wait(int*);
- void exit();
- int P1(){printf("<>P1<");fflush(stdout);return(1);}
- int P2(){printf(">P2<");fflush(stdout);return(2);}
- int P4(){printf(">P4<");fflush(stdout);return(4);}
- int P5(){printf(">P5<");fflush(stdout);return(5);}
- int P7(){printf(">P7<>");fflush(stdout);return(7);}
- int P8(){printf(">P8<>");fflush(stdout);return(8);}
- int P3(){printf(">P3<");fflush(stdout);return(3);}
- int P6(){printf(">P6<");fflush(stdout);return(6);}
- int P568() {
- int pidxP6; // pid figlio
- int pidxP6T; // pid del figlio che riattiva il padre
- int status;
- pidxP6=fork();
- if (pidxP6==0) {
- P6();
- // figlio
- exit(6); // che termina
- } else {
- P5(); // padre esegue
- pidxP6T=wait(&status); // e aspetta terminazione del figlio
- P8(); // e continua
- }
- }
- int main() {
- int pidxP3,pidxP3T,pidxP568,pidxP568T, status;
- printf("\n<start>\n");
- P1();
- pidxP3=fork();
- if (pidxP3==0) {
- P3();
- // figlio
- exit(3); // che termina
- } else {
- P2(); // padre esegue
- pidxP3T=wait(&status); // e aspetta la terminazione del figlio
- }
- pidxP568=fork();
- if (pidxP568==0) {
- P568();
- // figlio esegue
- exit(568); // e termina
- } else {
- P4(); P7(); // padre esegue
- pidxP568T=wait(&status); // e aspetta terminazione del figlio
- }
- printf("\n<end>\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement