typedef void SigFunc(int); inline SigFunc * Signal(int signo, SigFunc *func) { struct sigaction new_handl, old_handl; new_handl.sa_handler = func; /* clear signal mask: no signal blocked during execution of func */ if (sigemptyset(&new_handl.sa_mask)!=0){ /* initialize signal set */ return SIG_ERR; } new_handl.sa_flags=0; /* init to 0 all flags */ /* change action for signo signal */ if (sigaction(signo, &new_handl, &old_handl)){ return SIG_ERR; } return (old_handl.sa_handler); }