Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- #include <unistd.h>
- #include <sys/wait.h>
- int main(int argc, char *argv[]){
- int arg1Length = strlen(argv[1]);
- if((argc == 2) && (arg1Length<=20)){
- if(arg1Length == 1){
- return(*argv[1]);
- }
- int even = 0;
- if(arg1Length%2!=0){
- arg1Length--;
- even++;
- }
- int arraySubSize = arg1Length/2;
- char arr1[arraySubSize];
- char arr2[arraySubSize+even];
- int stat1=0;
- int stat2=0;
- char ret;
- for(int i=0; i<arraySubSize; i++) arr1[i] = argv[1][i];
- arr1[arraySubSize] = '\0';
- for(int i=0; i<arraySubSize+even; i++) arr2[i] = argv[1][i+arraySubSize];
- arr2[arraySubSize+even] = '\0';
- pid_t pid = getpid();
- pid_t child = fork();
- if(child==0){
- execlp("./zad8.out", "./zad8.out", arr1, NULL);
- }
- else if(child>0){
- child = fork();
- if(child==0){
- execlp("./zad8.out", "./zad8.out", arr2, NULL);
- }
- else if(child>0){
- wait(&stat1);
- ret = WEXITSTATUS(stat1);
- printf("%d, %d, %s, %c\n", pid, child, arr1, ret);
- }
- wait(&stat2);
- ret = WEXITSTATUS(stat2);
- printf("%d, %d, %s, %c\n", pid, child, arr2, ret);
- }
- return ret;
- }
- else{
- printf("%s", "Bledne argumenty\n");
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement