- 论坛徽章:
- 0
|
不知道发在哪个模块好。
unp中举了很多例子,都用到了信号处理函数。我不是很明白为啥在程序结束时,还需要“恢复原来的信号处理函数”
static void connect_alarm(int);
int
connect_timeo(...)
{
Signfunc *sigfunc;
int n;
sigfunc = Signal(SIGLARM, connect_alarm); //这里我理解是设置信号处理函数
if ( (n = connect(sockfd, saptr, salen)) < 0) {
close(sockfd);
if(errno == EINTR)
errno = ETIMEDOUT;
}
alarm(0);
SIgnal(SIGLARM,sigfunc); //为啥这里还要"恢复原来的信号处理函数"。程序都结束了,设置还有什么特殊的用途吗?
//就算是恢复原来的,应该再次调用:Signal(SIGLARM, connect_alarm);
return (n);
}
static void
connect_alarm(int signo)
{
return;
} |
|