#include #include #include #include int main(int argc, char **argv) { for (int i = 0; i < 10; i++) { if (fork() == 0) //i'th child exit(i); } for (int i = 0; i < 10; i++) { int status; pid_t childexited = wait(&status); if (childexited == -1) { perror("wait"); continue; } if (WIFEXITED(status)) { printf("child exited pid %d exit status %d\n", childexited, WEXITSTATUS(status)); } else if (WIFSIGNALED(status)) { printf("child crashed/was killed pid %d, signal %d\n", childexited, WTERMSIG(status)); } else { printf("something else\n"); } } }