gpt4 book ai didi

c - 如何阻止 poll() 被特定信号中断

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:25 25 4
gpt4 key购买 nike

我有一个 C 应用程序使用 poll 来等待一些数据。

目前,我正在将我的应用程序的其余部分实现到这个应用程序中,并且我使用基于时间的中断 (SIGRTMIN)。正如预期的那样,如果我的其他计时器之一回调,则 poll() 返回。

我怎样才能阻止 poll 这样做?我阅读了很多关于 ppoll() 的内容,但不确定如何使用它……我可以使用它来阻止此函数在触发计时器事件时返回吗?

(我对延迟几毫秒的民意调查没有任何问题)

最佳答案

如果在 poll() 中阻塞的线程/进程接收到未阻塞信号,则 poll() 被中断。如果您不希望这种情况发生,那么您可以在调用 poll() 之前阻塞所需的信号,然后在 poll() 返回后解除阻塞(参见 信号掩码())。但是请注意,这不会导致 poll() 延迟——恰恰相反。如果有的话,它会导致信号的接收延迟。如果 poll() 阻塞的时间足够长,那么它可能会导致多个 RT 信号排队,因此在您取消阻塞该信号后,您会快速连续多次接收到它。

您应该考虑改为检查 poll() 的返回值(无论如何您应该始终这样做)并在返回值是 EINTR 时重试。

关于c - 如何阻止 poll() 被特定信号中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32338495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com