有可能防止信号凝结吗?

Is it possible to prevent signal condensation?

本文关键字:信号 有可能      更新时间:2023-10-16

在Linux上的c++中,据我所知,如果多次传递相同的信号,则可能只调用一次信号处理程序。是否有可能重写此行为?例如,假设我有几个文件描述符,并且每当这些文件描述符上发生事件时,我都希望得到SIGIO的通知。所以我用F_SETOWN_EX命令来调用fcntl。但是,如果在两个文件描述符上同时发生事件,我可能只得到一个SIGIO,然后永远不会知道在另一个文件描述符上发生了事件。

现在我知道你可能想知道为什么我要使用信号,而不仅仅是epoll或其他东西。事情是我对事件发生的确切时间感兴趣,所以我正在考虑从SIGIO信号处理程序调用clock_gettime来记录事件的确切时间。

老问题,但如果有人仍然想知道:你应该能够通过使用fcntlF_SETSIG来选择一个实时信号(信号号>= SIGRTMIN),而不是使用默认的SIGIO来完成你想要的。