http://www.76ku.cn
分类: C/C++
2010-04-14 15:30:22
Sigfunc * sigfunc ;sigfunc=signal(SIGALRM, connect_alarm); //建立信号处理函数connect_alarm,(如果有)保存现有的信号处理函数if(alarm(10)!=0){..... // alarm was already set}if(connect( ... )<0){close(fd);if(errno==EINTR) errno=ETIMEDOUT; //防止三次握手继续进行}alarm(0);//关闭时钟signal(SIGALRM, sigfunc); //(如果有)恢复原来的信号处理函数return;}//信号处理函数static void connect_alarm(int signo){return; // 只是返回}
signal( ... );alarm(5);recv( ... );alarm(0);static void sig_alarm(int signo){return;}