#include #include #include #include #include int main() { pid_t pid1, pid2, finished_pid; printf("parent started\n"); pid1 = fork(); if (pid1 < 0) { printf("fork failed\n"); } else if (!pid1) { // child printf("this is child 1\n"); sleep(1); printf("child 1 finished\n"); } else { // parent pid2 = fork(); if (pid2 < 0) { printf("fork failed\n"); } else if (!pid2) { // child // asdfasdf printf("this is child 2\n"); sleep(5); printf("child 2 finished\n"); } else { // parent finished_pid = waitpid(pid2, NULL, 0); // reap child 2 printf("reaped child 2 (pid %d)\n", finished_pid); finished_pid = waitpid(pid1, NULL, 0); // reap child 1 printf("reaped child 1 (pid %d)\n", finished_pid); printf("parent finished\n"); } } return 0; }