/* * ISA 563, Spring 2011 * Copyleft by Muhammad Abdulla */ #include #include #include /* * sigcatch.c -- demonstrates signal handling in programs. */ static void sig_handler(int signo) { if ( signo == SIGINT ) { printf( "received SIGINT\n"); } else if ( signo == SIGTSTP ) { printf( "received SIGTSTP\n"); } else if ( signo == SIGHUP ) { printf( "received SIGHUP\n"); } else if ( signo == SIGQUIT ) { printf( "received SIGQUIT\n"); } else if ( signo == SIGTERM ) { printf( "received SIGTERM\n"); } else if ( signo == SIGABRT ) { printf( "received SIGABRT\n"); } else if ( signo == SIGUSR1 ) { printf( "received SIGUSR1\n"); } else if ( signo == SIGKILL) { // cannot catch this printf( "received SIGKILL\n"); } else if ( signo == SIGSTOP) { // cannot catch this printf( "received SIGSTOP\n"); } else { fprintf( stderr, "received signal %d\n", signo); } } int main(void) { signal(SIGINT, sig_handler); signal(SIGTSTP, sig_handler); signal(SIGHUP, sig_handler); signal(SIGQUIT, sig_handler); signal(SIGTERM, sig_handler); signal(SIGABRT, sig_handler); signal(SIGUSR1, sig_handler); // can't catch these two signal(SIGKILL, sig_handler); signal(SIGSTOP, sig_handler); while ( 1 ) { pause(); } }