【发布时间】:2017-04-22 04:56:42
【问题描述】:
我正在制作一个程序,它像服务器一样运行,所以它一直在运行poll。我需要同时处理 Ctrl-C 和 Ctrl-D。虽然在使用 poll 时 Ctrl-D 很容易使用(你也可以在 POLLIN 上使用 poll POLLIN stdin),但我不能来为信号提供了一个漂亮的解决方案。我是否需要创建一个虚拟文件,我的信号处理程序将在退出时向其中写入一些内容,或者管道是否适合此目的?
【问题讨论】:
-
管道 = 虚拟文件?或者您是在谈论将文件写入磁盘?从 poll() 捕获信号的正常解决方案是从信号处理程序将单个字节写入非阻塞管道。
-
请标记正确的平台(Linux?)
-
@DietrichEpp 我的意思是创建一个
pipe并在SIGINT出现时写信给它。 -
信号不应该导致
poll以EINTR退出,这样您就可以检查信号处理程序设置的标志了吗?