#include <stdio.h>
#include <unistd.h>#include <sys/types.h>#include <signal.h>
#include <sys/wait.h>void start_routine();
void signal_handler(int signo){
if(signo==SIGCHLD){ pid_t pid; while((pid=waitpid(-1,NULL,WNOHANG))>0){ } }}int main(){
signal(SIGCHLD,signal_handler);
int i;
pid_t pid; for(i=0;i<3;i++){ pid=fork(); if(pid==0){ start_routine(); return 2; } } while(1); return 1;}void start_routine(){
printf("-- %d <-- %d --\n",getpid(),getppid()); return;}