我有一个使用poll的C应用程序来等待一些数据。
目前我正在将其余的应用程序实现到此应用程序中,并使用基于时间的中断(SIGRTMIN)。正如预期的那样,如果我的其他计时器之一回拨,poll()会返回。
如何阻止民意调查呢?我正在阅读很多关于ppoll(),但不知道如何使用它...我可以使用它来阻止此函数在触发计时器事件时返回吗?
(民意调查延迟几毫秒我没有任何问题)
答案 0 :(得分:2)
如果poll()
中的线程/进程阻塞收到未阻止的信号,则poll()
将中断。如果您不希望这种情况发生,那么您可以在致电poll()
之前阻止所需信号,然后在poll()
返回后取消阻止(请参阅sigprocmask()
)。但请注意,这不会导致poll()
延迟 - 恰恰相反。如果有的话,它将导致接收信号被延迟。如果poll()
阻塞的时间足够长,那么它可能会导致多个RT信号排队,因此在您取消阻止该信号后,您会快速连续多次接收它。
您应该考虑检查poll()
的返回值(您应该始终执行此操作)并重试EINTR
。