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

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

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

通常,信号不会通过中断系统调用

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

POSIX允许任何一种行为,因此建议始终使用

sigaction
SA_RESTART
根据需要的行为选择设置或省略标志的位置。请参阅
sigaction
此处的文档:

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



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5085100.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-16
下一篇2022-11-16

发表评论

登录后才能评论

评论列表(0条)

    保存