Advertisement
desdemona

prawdziwa_mama

Mar 21st, 2013
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <stdlib.h>
  4.  
  5. int znajdz(int * tablica, int ilosc_poziomow) //obvious
  6. {
  7.     int i = 0;
  8.    
  9.     while(i<ilosc_poziomow && tablica[i] == -1)
  10.         i++;
  11.        
  12.     if ( i == ilosc_poziomow)
  13.         return -1;
  14.        
  15.     return i;
  16. }
  17.  
  18.  
  19. int main(int argc, char* argv[])
  20. {
  21.     int argumenty[66]; // wejscie ale nie w charach
  22.     int ilosc_poziomow = argc - 1;  //ilosc elementow w tab
  23.     int i;
  24.     int id_procesu;
  25.     int ilosc_klonow;
  26.     int j;
  27.     int matka = 1;
  28.    
  29.    
  30.    
  31.     for(i=1;i<argc;i++)
  32.     {
  33.         argumenty[i-1] = atoi(argv[i]);
  34.     }
  35.     argumenty[argc-1] = -1;
  36.    
  37.     ilosc_klonow = argumenty[0];
  38.     argumenty[0] = -1;
  39.     //pobieramy, ustawiamy ze pobrany
  40.     i = 0;
  41.    
  42.     while(i < ilosc_klonow)
  43.     {
  44.         if(ilosc_klonow > 0) //takie zabezpieczenie, bez tego chyba sie cos sypalo
  45.             id_procesu = fork(); //tworzymy nowy proces
  46.        
  47.         if(id_procesu == 0) //jestem procesem potomnym
  48.         {
  49.             i = 0; //wiec ustawiam i na zero, bo jeszcze nic nie utworzylem
  50.             j = znajdz(argumenty, ilosc_poziomow);
  51.             if(j== -1)
  52.             {
  53.                 ilosc_klonow = -1;
  54.                 //nie bedzie klonowania, smutek
  55.             }
  56.             else
  57.             {
  58.                 ilosc_klonow = argumenty[j];
  59.                 argumenty[j] = -1;
  60.                 //pobieramy, ustawiamy na pobrane
  61.             }  
  62.             matka = 0;
  63.             //nie jestes moja prawdziwa mama
  64.         }
  65.         else
  66.         {
  67.             i++;
  68.             //klonuj dalej
  69.         }
  70.     }
  71.    
  72.     if(matka == 1)
  73.     {
  74.         sleep(1);
  75.         execlp( "ps", "-u student", "--forest", NULL );
  76.     }
  77.     else
  78.         sleep(5);
  79.    
  80.    
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement