Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <unistd.h>
- #include <string.h>
- int main(int argc, char *argv[])
- {
- //Dlugosc lanucha na argv[1]
- int i=0;
- int j=0;
- char *str = malloc(strlen(argv[1]) + 1);
- strncpy(str, argv[1], strlen(argv[1])); //str zwraca wskaznik
- int ilosc = strlen(argv[1]); //ilosc "znakow" w argv[1]
- int zmienna = (ilosc/2);
- char bufor[zmienna]; //Tablica trzymajaca polowe "znakow" z argv[1]
- char buforZ[zmienna];
- for (i=0; i<zmienna; i++) //przypisanie polowy znakow do bufora
- {
- bufor[i] = str[i];
- j++;
- }
- for (i=0; i<zmienna; i++, j++) //przypisanie "drugiej" polowy znakow do bufora
- {
- buforZ[i] = str[j];
- }
- if((ilosc)>1)
- {
- pid_t pid = fork();
- if (pid < 0)
- {
- perror("fork failed.");
- exit(1);
- }
- else if ( pid == 0)
- {
- //Dziecko
- char* args[] = { argv[0], bufor, NULL};
- printf("Tutaj dziecko. Moje PID to: %d\n", getpid());
- printf("Moje argumenty to: %s\n", args[1]);
- printf("Moj rodzic to: %d\n", getppid());
- printf("Argumenty mojego rodzica to: %s\n\n", argv[1]);
- execv(args[0], args);
- //wywołuje program z danymi wejsciowymi wielkosci połowy rodzica.
- //Musze wywołać jeszcze "drugą" połowe.
- }
- printf("Tutaj rodzic. Moje PID to: %d\n", getpid());
- printf("Moje argumenty to: %s\n\n", argv[1]);
- //Rodzic
- //Czeka na koniec procesów dziecka
- wait(NULL);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement