我在Nginx
的error.log中看到以下错误,
[通知] 12451#0:收到信号29(SIGIO)
我想知道某个程序在哪种情况下会收到SIGIO
?
答案 0 :(得分:2)
对于异步信令代码,应执行以下步骤。
首先,您应该允许您的进程接收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