/*------------------------------------------------------------------*/ /* testsignal.c */ /* Author: Bob Dondero */ /* The signal system call. */ /*------------------------------------------------------------------*/ #define _GNU_SOURCE #include #include #include /*------------------------------------------------------------------*/ static void mySigintHandler(int iSignal) { printf("In mySigintHandler with argument %d\n", iSignal); } /*------------------------------------------------------------------*/ int main(int argc, char *argv[]) { void (*pfRet)(int); pfRet = signal(SIGINT, mySigintHandler); if (pfRet == SIG_ERR) {perror(argv[0]); return EXIT_FAILURE; } printf("Entering an infinite loop\n"); for (;;) ; /* Never should reach this point. */ } /*------------------------------------------------------------------*/ /* Sample execution: $ testsignal Entering an infinite loop ^CIn mySigintHandler with argument 2 ^CIn mySigintHandler with argument 2 ^CIn mySigintHandler with argument 2 */ /* Note: Can use kill command or Ctrl-\ to stop process. */