Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.45 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys/types.h>
  4. #include <sys/wait.h>
  5. #include <unistd.h>
  6. #include <string.h>
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10.     //Dlugosc lanucha na argv[1]
  11.     int i=0;
  12.     int j=0;
  13.     char *str = malloc(strlen(argv[1]) + 1);
  14.     strncpy(str, argv[1], strlen(argv[1])); //str zwraca wskaznik
  15.     int ilosc = strlen(argv[1]); //ilosc "znakow" w argv[1]
  16.     int zmienna = (ilosc/2);
  17.     char bufor[zmienna]; //Tablica trzymajaca polowe "znakow" z argv[1]
  18.     char buforZ[zmienna];
  19.    
  20.     for (i=0; i<zmienna; i++) //przypisanie polowy znakow do bufora
  21.     {
  22.         bufor[i] = str[i];
  23.         j++;
  24.     }
  25.    
  26.     for (i=0; i<zmienna; i++, j++) //przypisanie "drugiej" polowy znakow do bufora
  27.     {
  28.         buforZ[i] = str[j];
  29.     }
  30.  
  31.    
  32.     if((ilosc)>1)
  33.     {
  34.         pid_t pid = fork();
  35.         if (pid < 0)
  36.         {
  37.             perror("fork failed.");
  38.             exit(1);
  39.         }
  40.         else if ( pid == 0)
  41.         {
  42.             //Dziecko
  43.             char* args[] = { argv[0], bufor, NULL};
  44.             printf("Tutaj dziecko. Moje PID to: %d\n", getpid());
  45.             printf("Moje argumenty to: %s\n", args[1]);
  46.             printf("Moj rodzic to: %d\n", getppid());
  47.             printf("Argumenty mojego rodzica to: %s\n\n", argv[1]);
  48.             execv(args[0], args);
  49.             //wywołuje program z danymi wejsciowymi wielkosci połowy rodzica.
  50.             //Musze wywołać jeszcze "drugą" połowe.
  51.         }
  52.    
  53.     printf("Tutaj rodzic. Moje PID to: %d\n", getpid());
  54.     printf("Moje argumenty to: %s\n\n", argv[1]);
  55.     //Rodzic
  56.     //Czeka na koniec procesów dziecka
  57.    
  58.     wait(NULL);
  59.     }
  60.  
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement