![导致EINTR的信号从何而来?](https://linux22.com/image/224924/%E5%AF%BC%E8%87%B4EINTR%E7%9A%84%E4%BF%A1%E5%8F%B7%E4%BB%8E%E4%BD%95%E8%80%8C%E6%9D%A5%EF%BC%9F.png)
我知道这EINTR
是所谓的可中断系统调用可能返回的错误。我的问题是导致EINTR的信号从何而来?
我在Python中使用时经常遇到这个问题fnctl
。我没有发出任何中断命令,例如ctrl
+ c
。
答案1
导致系统调用返回 EINTR 的信号来自信号通常来自的地方。您描述的行为可能是由信号处理程序捕获的任何信号引起的。
我对你的问题的解释是,你有一个具体的情况,你的阻塞系统调用被你无法找到原因的信号中断。作为线索,您写道,这些神秘信号通常在您使用 fcntl 系统调用时发生。 fcntl 系统调用可用于通知进程文件系统中的更改等事件。这些事件被报告为信号。如果不了解您的代码的作用,我无法给出更具体的答案。检查您使用 fcntl 的目的。