Add the following to your code in some configuration .h file. This will allow you to use signal() in the SA_OLDSTYLE of handling, but also produce full-size core files.
#include <stdio.h> #include <sys/types.h> #include <sys/signal.h> #define signal SIGNAL void (*SIGNAL(int signo, void (*fcn)(int))) { struct sigaction act, oact; act.sa_handler = fcn; sigemptyset(&(act.sa_mask)); act.sa_flags = SA_FULLDUMP | SA_OLDSTYLE; if (sigaction(signo, &act, &oact)) return(SIG_ERR); else return(oact.sa_handler); }
/*********************************************************************/ main() { int sigcatch(); signal(SIGQUIT, sigcatch); for (;;) sleep(1); /* sleep forever */ /* send two SIGQUIT's to the process and ** the second one will produce the core file */ } int sigcatch() { printf("Caught the signal"); }
[ Doc Ref: 90605222314630 Publish Date: Mar. 13, 2000 4FAX Ref: 8258 ]