Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* porgram operujacy na procesach
- Michal Szachno
- frupa: I8X1N1
- */
- #inculde <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- int main()
- {
- int pid3 = fork(); // przypisanie do zmiennej wartosci zwracanej przez fork
- int pid2, pid4, pid5, pid6, pid7, pid8, pid9, pid10; // przechowywanie ID procesow
- // case 0: zwraca zero oraz swój pisd do procesu nadrzednego
- // case -1: zwraca blad
- // default: procesowanie procesu nadrzednego
- switch (pid3)
- {
- case 0:
- pid5=fork(); // powolanie procesu potomnego P5
- switch(pid5)
- {
- case 0:
- printf("P5: %d: %d\n", getpid(), getppid());
- exit(0);
- break;
- case -1:
- printf("Brak funkcji fork\n");
- exit(-1);
- break;
- default:
- printf("P3: %d: %d: %d\n", getpid(), getppid(), pid5);
- wait(NULL); // oczekkiwanie na zakonczenie procesu optomnego
- exit(0);
- break;
- }
- case -1:
- printf("Brak funkcji fork\n");
- exit(1);
- break;
- default:
- pid4=fork() //tworzenie kolejnego procesu potomnego z P1
- switch(pid4)
- {
- case 0: // proces potomny P4
- pid6= fork();
- switch(pid6)
- {
- case 0:// fork zwraca 0 w procesie potomnym
- pid8=fork();// proces podrzedny P8 utworzony; nadrzedny P6
- switch(pid8)
- {
- case 0:// proces P8
- printf("P8: %d: %d \n", getpid(), geetppid());
- exit(0);
- break;
- case -1:
- printf("Brak funkcji fork\n");
- exit(1);
- break;
- default:
- pid9=fork();
- switch(pid9)
- {
- case 0:
- printf("P9: %d: %d \n", getpid(), geetppid());
- exit(0);
- break;
- case -1:
- printf("Brak funkcji fork\n");
- exit(1);
- break;
- default:
- pid10=fork();
- switch(pid10)
- {
- case 0:
- printf("P10: %d: %d \n", getpid(), geetppid());
- exit(0);
- break;
- case -1:
- printf("Brak funkcji fork\n");
- exit(1);
- break;
- default:
- printf("P6: %d: %d: %d, %d, %d\n", getpid(), getppid(), pid8, pid9, pid10);
- wait(NULL);// oczekiwanie na zakonczenie procesow potomnych P8, P9, P10
- wait(NULL);
- wait(NULL);
- exit(0);
- break;
- }
- case -1:
- printf("Brak funkcji fork\n");
- exit(1);
- break;
- default:
- pid7=fork();
- switch(pid7)
- {
- case 0:
- printf("P7: %d: %d\n", getpid(), getppid());
- exit(0);
- break;
- case -1;
- printf("Brak funkcji fork\n");
- exit(1);
- break;
- default:
- printf("P4: %d: %d, %d, %d\n", getpid(), getppid(), pid6, pid7);
- wait(NULL);// oczekiwanie na zakonczenie procesow potomnych P6, P7
- wait(NULL);
- exit(0);
- break;
- }
- case -1:
- printf("Brak funkcji fork");
- exit(1);
- break;
- default:
- pid2=fork(); // tworzenie procesu potomnego z P1
- switch(pid2)
- {
- case 0:
- printf("P2: %d: %d\n", getpid(), getppid());
- exit(0);
- break;
- case -1:
- printf("Brak funkcji fork");
- exit(1);
- break;
- default: //dane z P1
- printf("P1: %d: %d: %d, %d, %d\n", getpid(), getppid(), pid2, pid3, pid4);
- wait(NULL);// oczekiwanie na zakonczenie pracy procesow potomnych P2, P3, P4
- wait(NULL);
- wait(NULL);
- exit(0);
- break;
- }
- }
- }
- }
- }
- }// pierwszy switch
- return 0;
- } // main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement