#include "ansidecl.h" #include #include #include #include #ifndef __USE_GNU #ifdef atarist #include #define strsignal(s) signal_names[(s)] #else #define strsignal(s) ("signal FOO") #endif #endif #ifndef __USE_GNU #ifdef sun #define raise(X) kill(getpid(), X) #endif #endif int win = 0; void DEFUN(handler, (sig), int sig) { printf("Received signal %d (%s).\n", sig, strsignal(sig)); win = 1; } int DEFUN_VOID(main) { if (signal(SIGINT, handler) == SIG_ERR) { perror("signal: SIGINT"); return(EXIT_FAILURE); } puts("Set handler."); printf("Sending myself signal %d.\n", SIGINT); fflush(stdout); if (raise(SIGINT) < 0) { perror("raise: SIGINT"); return(EXIT_FAILURE); } if (!win) { puts("Didn't get any signal."); return(EXIT_FAILURE); } puts("Got a signal."); return(EXIT_SUCCESS); }