#include #include #include #include #include #include #include struct sigaction sa_chld; int i = 0; static void chld_handler (int signum) { int status = 0; wait (&status); printf ("child closed: status = %i\n", status >> 8); } void test (void) { pid_t pid = fork (); if (pid == 0) { setpriority (PRIO_PROCESS, 0, 0); printf ("helo from child, i = %i\n", i); exit (i); } } int main () { memset (&sa_chld, 0, sizeof (sa_chld)); sa_chld.sa_handler = &chld_handler; sigaction (SIGCHLD, &sa_chld, NULL); setpriority (PRIO_PROCESS, 0, -1); while (1) { i++; test (); sleep (3); } return 0; }