Chinaunix

标题: recvfrom()的问题 [打印本页]

作者: xiaozhu2007    时间: 2008-08-17 15:17
标题: recvfrom()的问题
c/s采用UDP连接方式,使用sendto()和recvfrom()收发数据,客户端注册一个接收SIGALRM信号的信号处理程序。
假如在客户端recvfrom()服务端发送的数据的时候,产生一个SIGALRM信号,因此客户端执行信号处理程序(加入信号处理程序
只有简单的return语句),当从信号处理函数返回的时候,recvfrom()为什么返回值不是小于0?errno为什么不是EINTR?
作者: xi2008wang    时间: 2008-08-17 15:44
应该是recvfrom中断后自动重启动了
作者: xiaozhu2007    时间: 2008-08-17 15:48
标题: 回复 #2 xi2008wang 的帖子
一定是了!
作者: qliu00    时间: 2008-08-17 15:52
若无错误发生,recvfrom()返回读入的字节数。
如果连接已中止,返回0。
作者: lukeden    时间: 2008-08-17 18:32
可能是recvfrom被中断后自动启动了
作者: youxiaohe    时间: 2008-08-17 23:01
标题: 回复 #1 xiaozhu2007 的帖子
怎么确定是在调用recvfrom()的过程中收到的信号,而不是之前或之后收到的呢?
作者: qliu00    时间: 2008-08-17 23:06
在调用recvfrom()的过程中收到的信号。客户端收到信息才会有这个,所以一定是在之后




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2