int main (int argc, char** argv) { int err; err = pipe(fd); if(err == -1) { return -1; } printf("%s\n", "In the main process.\n"); pid_t pid = fork(); if(pid == 0) { /* children's code*/ printf("%s\n", "In the children process.\n"); children_code(fd[1]); } else if(pid > 0) { /* parent's code */ printf("%s\n", "In the parent process\n"); parent_code(fd[0]); } else { /* error */ return -1; } printf("\n"); return 0; }
main(int ac, char *av[]) { void child_code(int), parent_code(int); pid_t pid; int i,n; int delay; /* * setup */ if ( ac == 1 ){ fprintf(stderr,"usage: sol08.8b numberofchildren\n"); exit(1); } n = atoi(av[1]); srand(getpid()); printf("before: mypid is %d\n", getpid()); /* * main loop */ for(i=0; i<n ; i++){ delay = 1 + (rand() % MAXDELAY); pid = fork(); if ( pid == -1 ) oops("fork", 2); if ( pid == 0 ) child_code(delay); } parent_code(n); return 0; }
/* Execute the given command in the array. Supports arguments */ void execute(char *input){ pid_t pid; char command[BUF_SIZE]; trim(input, command); if(strcmp("exit", command) == 0){ printf("exiting...\n"); exit(0); } else if(strcmp("", command) != 0){ pid = fork(); if(pid < 0){ perror("fork"); exit(-1); } else if(pid == 0){ /*child*/ child_code(command); } else{ /* parent */ parent_code(); } } }
int main(int argc, char const *argv[]) { /* basically the same key used for the semaphore programs */ key_t key; pid_t childPid; int msqid; /* create a token */ if((key = ftok("/tmp", SECRET_KEY)) == -1) { printf("[-] Error on ftok\n"); return 1; } /* create a set of msg */ if((msqid = msgget(key, 0666|IPC_CREAT|IPC_EXCL)) == -1) { printf("[-] Error on msgid\n"); return 1; } /* now use the fork */ switch (childPid = fork()){ case -1: //fork fallita return 1; break; case 0: // eseguo il codice del figlio child_code(msqid); break; default: // eseguo il codice del padre parent_code(msqid); break; } return 0; }
int main(void) { int newpid; printf("Before: my pid is %d\n", getpid()); if ((newpid = fork()) == -1) perror("fork"); else if (newpid == 0) child_code(DELAY); else parent_code(newpid); return EXIT_SUCCESS; }
int main() { int newpid; void child_code(), parent_code(); printf("before: my pid is %d \n", getpid()); if ((newpid = fork()) == -1) perror("fork"); else if (newpid == 0) child_code(DELAY); else parent_code(newpid); }
int main(void) { int newpid; void child_code(), parent_code(); printf("before: my pid is %d\n", getpid()); if ((newpid = fork()) == -1) { perror("fork"); } else if (newpid == 0) { child_code(DELAY); } else { parent_code(newpid); } return 0; }
int main (int argc, char** argv) { int i, err; for(i = 1; i <= 30; i++) { if(i != SIGKILL && i != SIGSTOP) { err = sigaction(i, &act, NULL); if(err == -1) { printf("Cannot handle signal : %d\n", i); return -1; } } } err = pipe(fd); if(err == -1) { return -1; } printf("%s\n", "In the main process.\n"); pid_t pid = fork(); if(pid == 0) { /* children's code*/ printf("%s\n", "In the children process.\n"); close(fd[0]); children_code(fd[1]); } else if(pid > 0) { /* parent's code */ printf("%s\n", "In the parent process\n"); close(fd[1]); parent_code(fd[0]); } else { /* error */ return -1; } printf("\n"); return 0; }
int main(int argc, char **argv) { int newpid; int i; void child_code(int); void parent_code(int); if(argc != 2){ printf("Usage: waitdemo_l number_of_fork\n"); exit(0); } for(i = 0; i < atoi(argv[1]); i++){ if((newpid = fork()) == -1){ perror("fork"); exit(0); }else if(newpid == 0) child_code(DELAY); else parent_code(newpid); } return 0; }