调用POSIX sigaction函数的signal函数。
#include "unp.h"
Sigfunc* signal(int signo, Sigfunc * func)//第一个参数为信号名,第二个参数或为指向函数的指针,或为常值SIG_IGN或SIG_DFL.{
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;//SunOS 4.x
#endif
}
else
{
#ifdef SA_RESTART
act.sa_flags |= SA_RESTART;
#endif
}
if (sigaction(signo, &act, &oact) < 0)
return (SIG_ERR);
return (oact.sa_handler);
}