#include #include #include #include #include #include "signal-helper.h" #define N 10 int main() { pid_t pid[N]; int i; int child_status; for (i = 0; i < N; i++) { if ((pid[i] = fork()) == 0) { /* Child: Infinite Loop */ while(1) { sleep(1); } } else { printf("Started process %d\n", pid[i]); sleep(1); } } for (i = 0; i < N; i++) { printf("Killing process %d\n", pid[i]); kill(pid[i], SIGINT); sleep(1); } for (i = 0; i < N; i++) { pid_t wpid = wait(&child_status); if (WIFEXITED(child_status)) { printf("Child %d terminated with exit status %d\n", wpid, WEXITSTATUS(child_status)); } else { printf("Child %d terminated abnormally\n", wpid); } } return 0; }