1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include <signal.h> void (*signal(int sig, void (*func)(int)))(int) { struct sigaction act, oact; act.sa_handler = func; act.sa_flags = SA_RESTART; if (sigaction(sig, &act, &oact) < 0) return SIG_ERR; return oact.sa_handler; }