免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1735 | 回复: 5
打印 上一主题 下一主题

请教:socket和信号的关系 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-04 14:23 |只看该作者 |倒序浏览
如果一个socket(TCP或UDP)正在执行某个阻塞式操作(select或recvfrom),是否有信号能使该阻塞操作跳出,或者说,信号能否影响到socket操作?
请不吝赐教,谢谢!

论坛徽章:
0
2 [报告]
发表于 2004-11-04 15:15 |只看该作者

请教:socket和信号的关系

当然会影响到!
如果楼主对此有疑问,说明在楼主原有的程序中有漏洞。使用这些函数时都要考虑被信号中断的问题!

论坛徽章:
0
3 [报告]
发表于 2004-11-05 08:55 |只看该作者

请教:socket和信号的关系

多谢FH!
再问一下:
那一般会有哪些信号会对阻塞操作产生影响呢,
是不是除了信号还有其他事件也能打断阻塞式操作呢?

论坛徽章:
0
4 [报告]
发表于 2004-11-05 09:41 |只看该作者

请教:socket和信号的关系

所有信号都会中断阻塞操作。
具体问题具体分析,要养成man的好习惯。

论坛徽章:
0
5 [报告]
发表于 2004-11-05 09:52 |只看该作者

请教:socket和信号的关系

任何信号的产生都会中断被阻塞的系统调用
IPC中的某些事件的发生也会导致阻塞的进程被唤醒

论坛徽章:
0
6 [报告]
发表于 2004-11-05 11:29 |只看该作者

请教:socket和信号的关系

问题是这样的:
我的程序(多线程,有影响?)在阻塞监听一个UDP端口(recvfrom),然后我用 kill -xxx pid 发送信号给它,结果如下:
1, 进程被终止
2, 信号被忽略,进程没有任何影响,监听线程依然处于阻塞状态
3, 信号被程序捕获(但是不作任何处理),对监听线程也没有影响

recvfrom的帮助文档中说存在这种返回:
EINTR: The  receive  was interrupted by delivery of a signal before any data were available.

我不知道什么时候才有可能出现这种情况?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP