您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在多线程环境中recv()不会被信号中断

在多线程环境中recv()不会被信号中断

通常,信号不会通过中断系统调用EINTR。从历史上看,有两种可能的信号传递行为:BSD行为(当被信号中断时,系统调用自动重新启动)和Unix系统V行为(当被信号中断时,系统调用将返回-1并errno设置为EINTR)。Linux(内核)采用了后者,但是GNU C库开发人员(正确地)认为BSD行为更为理智,在现代Linux系统上,调用signal(这是一个函数)会导致BSD行为。

POSIX允许任何一种行为,因此建议始终使用sigactionSA_RESTART根据需要的行为选择设置或省略标志的位置。请参阅sigaction此处的文档:

http://www.opengroup.org/onlinepubs/9699919799/functions/sigaction.html

其他 2022/1/1 18:18:30 有533人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶