我在 Nginx
的 error.log 中看到以下错误,
[notice] 12451#0: signal 29 (SIGIO) received
我想知道程序在什么情况下会收到 SIGIO
?
最佳答案
对于异步信号代码应该执行这些步骤。
首先你应该让你的进程接收 SIGIO 然后 您的套接字或管道应置于异步模式。
在您的代码中搜索这些行
//allow the process to receive SIGIO
fcntl(fd, F_SETOWN, getpid());
和
//Make socket/pipe non-blocking
fcntl(fd, F_SETFL, FASYNC);
或
//Make socket/pipe non-blocking
fcntl(fd, F_SETFL, O_NONBLOCK);
要搜索的关键字是:F_SETOWN、FASYNC 和 O_NONBLOCK
关于linux - 程序接收信号SIGIO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7414499/