//------------------------------------------------------------------- // 2signals.cpp // // This program demonstrates fork(), signal(), and setitimer(). // // programmer: ALLAN CRUSE // written on: 04 OCT 2004 //------------------------------------------------------------------- #include // for printf() #include // for exit() #include // for fork() #include // for signal() #include // for setitimer() int count = 0, done = 0; void upon_signal( int signum ) { ++count; if (( count == 4 )||( signum == SIGCHLD )) done = 1; printf( "count=%d \n", count ); } int main( int argc, char **argv ) { struct itimerval it = { { 1, 0 }, { 1, 0 } }; if ( fork() == 0 ) { signal( SIGVTALRM, upon_signal ); setitimer( ITIMER_VIRTUAL, &it, NULL ); } else { signal( SIGCHLD, upon_signal ); } while( !done ); exit(0); }