반응형
Sigfunc *signal(
int
signo, Sigfunc *func)
{
struct
sigaction act, oact;
act.sa_handler = func;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
if
(signo == SIGALRM) {
#ifdef SA_INTERRUPT
act.sa_flags |= SA_INTERRUPT;
#endif
}
else
{
#ifdef SA_RESTART
act.sa_flags |= SA_RESTART;
#endif
}
if
(sigaction(signo, &act, &oact) < 0)
return
(SIG_ERR);
return
(oact.sa_handler);
}
반응형