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");
}