00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "defs.h"
00022
00023
00024 static volatile sig_atomic_t gotsig = -1;
00025
00026 static void handler(int signum)
00027 {
00028 gotsig = signum;
00029 }
00030
00031 int main(void)
00032 {
00033 struct sigaction act;
00034 time_t start, stop;
00035
00036 memset(&act, 0, sizeof(act));
00037 act.sa_handler = handler;
00038 act.sa_flags = SA_RESTART;
00039 ec_neg1( sigaction(SIGINT, &act, NULL) )
00040 printf("Type Ctrl-c in the next 10 secs.\n");
00041 ec_neg1( start = time(NULL) )
00042 sleep(20);
00043 ec_neg1( stop = time(NULL) )
00044 printf("Slept for %ld secs\n", (long)(stop - start));
00045 if (gotsig > 0)
00046 printf("Got signal number %ld\n", (long)gotsig);
00047 else
00048 printf("Did not get signal\n");
00049 exit(EXIT_SUCCESS);
00050
00051 EC_CLEANUP_BGN
00052 exit(EXIT_FAILURE);
00053 EC_CLEANUP_END
00054 }
00055