Facebook
From Bulky Matamata, 6 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 254
  1. // Klaudia Kohnke
  2. // H6X2S1
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <sys/types.h>
  6. #include <sys/wait.h>
  7. #include <unistd.h>
  8.  
  9. int main()
  10. {
  11.        
  12. /*PID procesow - (long int), w zależności od wariantu systemu operacyjnego definicja ta może być inna. Dlatego lepiej posługiwać się nazwą pid_t(zamiast int). */      
  13.         pid_t procesid2;
  14.         pid_t procesid3;
  15.         pid_t procesid4;
  16.         pid_t procesid5;
  17.         pid_t procesid6;
  18.         pid_t procesid7;
  19.         pid_t procesid8;
  20.         pid_t procesid9;
  21.         pid_t procesid10;
  22.        
  23.                                                
  24.         switch(procesid2 = fork())
  25.         {                                                                                              
  26.                 case 0:
  27.                 // Proces P2 zostal utworzony - potomek procesu macierzystego
  28.                 printf("P2 ID: %d, PPID: %d, procesy potomne nie istnieja. n", getpid(), getppid());
  29.                 exit(0);        //exit(0) - oznacza poprawne zakończenie wykonania procesu
  30.                                                                                                                
  31.                 case -1:       
  32.                 printf("Blad, error!");
  33.                 exit(1);        //exit(dowolna wartość różna od 0) - oznacza wystąpienie błędu                                                                                                                                                  
  34.                
  35.                 default:
  36.                
  37.                 switch (procesid3 = fork())
  38.                 {                                                                                                              
  39.                 case 0:
  40.                         // Proces P3 zostal utworzony - potomek procesu macierzystego
  41.                         switch(procesid4 = fork())
  42.                                 {                                                                                              
  43.                                 case 0:
  44.                                 // Proces P6 zostal utworzony
  45.                                 printf("P6 ID: %d, PPID: %d, procesy potomne nie istnieja. n", getpid(), getppid());
  46.                                 exit(0);                                                                                               
  47.                                 case -1:
  48.                                 printf("Blad, error!");
  49.                                 exit(1);                                                                                                                                               
  50.                                 }
  51.                         switch(procesid5 = fork())
  52.                                 {                                                                                              
  53.                                 case 0:
  54.                                 // Proces P7 zostal utworzony
  55.                                 printf("P7 ID: %d, PPID: %d, procesy potomne nie istnieja. n", getpid(), getppid());
  56.                                 exit(0);                                                                                               
  57.                                 case -1:
  58.                                 printf("Blad, error!");
  59.                                 exit(1);                                                                                                                                                                                                                                                                                                                                                       
  60.                                 }
  61.                         switch (procesid6 = fork())
  62.                                 {                                                                      
  63.                                 case 0:
  64.                                 // Proces P8 zostal utworzony                    
  65.                                         switch(procesid7 = fork())
  66.                                                 {                                                                                              
  67.                                                 case 0:
  68.                                                 // Proces P9 zostal utworzony
  69.                                                 printf("P9 ID: %d, PPID: %d, procesy potomne nie istnieja. n", getpid(), getppid());
  70.                                                 exit(0);                                                                                               
  71.                                                 case -1:
  72.                                                 printf("Blad, error!");
  73.                                                 exit(1);                                                                                                                                                                       
  74.                                                 }
  75.                                         switch(procesid8 = fork())
  76.                                                 {                                                                                              
  77.                                                 case 0:
  78.                                                 // Proces P10 zostal utworzony
  79.                                                 printf("P10 ID: %d, PPID: %d, procesy potomne nie istnieja. n", getpid(), getppid());
  80.                                                 exit(0);                                                                                               
  81.                                                 case -1:
  82.                                                 printf("Blad, error!");
  83.                                                 exit(1);                                                                                                                                                                                                                                                                                                                                               
  84.                                                 }
  85.  
  86.                                 printf("P8 ID: %d, PPID: %d, ID procesów potomnych: %d, %dn", getpid(), getppid(), procesid7, procesid8);
  87.                                 wait(NULL);
  88.                                 wait(NULL);
  89.                                 exit(0);
  90.                                 }
  91.                                
  92.                         printf("P3 ID: %d, PPID: %d, ID procesów potomnych: %d, %d, %d n", getpid(), getppid(), procesid4, procesid5,procesid6);
  93.                         wait(NULL);
  94.                         wait(NULL);
  95.                         wait(NULL);
  96.                         exit(0);                                                               
  97.                 }
  98.                 switch(procesid9 = fork())
  99.                         {                                                                                              
  100.                         case 0:
  101.                         // Proces P4 zostal utworzony  - potomek procesu macierzystego
  102.                         printf("P4 ID: %d, PPID: %d, procesy potomne nie istnieja. n", getpid(), getppid());
  103.                         exit(0);                                                                                               
  104.                         case -1:
  105.                         printf("Blad, error!");
  106.                         exit(1);                                                                                                                                                                                                                                                                                                                                               
  107.                         }                                                      
  108.                 switch(procesid10 = fork())
  109.                         {                                                                                              
  110.                         case 0:
  111.                         // Proces P5 zostal utworzony  - potomek procesu macierzystego
  112.                         printf("P5 ID: %d, PPID: %d, procesy potomne nie istnieja. n", getpid(), getppid());
  113.                         exit(0);                                                                                               
  114.                         case -1:
  115.                         printf("Blad, error!");
  116.                         exit(1);                                                                                                                                                                                                                                                                                                                                               
  117.                         }      
  118.  
  119.                 printf("P1 ID: %d, PPID: %d, ID procesów potomnych: %d, %d, %d, %d n", getpid(), getppid(), procesid2, procesid3, procesid9, procesid10);
  120.                 wait(NULL); // Proces 1 ma 4 potomkow, wiec
  121.                 wait(NULL); // nalezy poczekac na zakonczenie
  122.                 wait(NULL); // czterech procesow - stad funkcja wait
  123.                 wait(NULL); //
  124.                 exit(0);
  125.         }
  126.         return 0;
  127. }