#include #include #include #include int main () { int pid; int i; pid = fork (); if (pid) { /* Parent */ sleep (10); printf ("Killing Children (SIGTERM)\n"); if (kill (-pid, SIGTERM) < 0) perror ("kill (SIGTERM)"); printf ("Done\n"); sleep (10); printf ("Killing Children (SIGKILL)\n"); if (kill (-pid, SIGKILL) < 0) perror ("kill (SIGKILL)"); printf ("Done\n"); exit (0); } else { /* Child */ if (setpgrp () < 0) { perror ("setpgrp"); kill (getppid (), SIGTERM); exit (1); } printf ("Process Group created\n"); for (i=0; i<10; ++i) { if (fork () == 0) { printf ("Hi: %d\n", (int)getpid ()); sleep (100); printf ("Terminating normally: %d %d\n", (int)getpid (), (int)getppid ()); return 0; } } return 0; } return 0; }