#include /* for errno() */ #include /* for signal(), SIG* */ #include /* for sprintf(), stderr, ... */ #include /* for exit() */ #include /* for strerror() */ #include /* for sleep() */ #include "funcs.h" /* for infomsg(), errormsg() */ /* * Macros */ #define A_LONG_TIME 3600 #define TIMEOUT 5 /* * Type and struct definitions */ /* * Global variables */ /* * Forward declarations */ void sigalrm_handler(int); /* * Functions */ int main( int argc, char *argv[]) { int rc; /* * Initialise. */ infomsg("setting up signal handlers ..."); signal(SIGALRM, sigalrm_handler); /* * Schedule timeout alarm. */ infomsg("scheduling timeout alarm ..."); alarm(TIMEOUT); /* * Start sleep. */ infomsg("before calling sleep()"); rc = sleep(A_LONG_TIME); infomsg("after calling sleep()"); if (rc != 0) infomsg("sleep() returned early due to: %s", strerror(errno)); /* * Clean up and exit. */ infomsg("cleaning up and exiting ..."); signal(SIGALRM, SIG_DFL); return(0); } void sigalrm_handler( int sig) { infomsg("received SIGALRM"); }