在Linux上的C ++中,根据我的理解,如果多次传递相同的信号,信号处理程序可能只被调用一次。是否可以覆盖此行为?例如,假设我有几个文件描述符,并且只要有这些文件描述符上的事件,我希望SIGIO收到通知。所以我在fcntl
上使用F_SETOWN_EX
命令调用epoll
。但是如果在2个文件描述符上有同时发生的事件,我可能只得到一个SIGIO,然后再也不知道在另一个文件描述符上发生了一个事件。
现在我知道你可能想知道我为什么要使用信号,而不是jusgt clock_gettime
或其他东西。问题是我对事件发生的确切时间感兴趣,所以我想从SIGIO信号处理程序调用{{1}}来记录事件的确切时间。
答案 0 :(得分:0)
老问题,但万一有人仍然想知道:你应该能够通过fcntl
使用F_SETSIG
选择实时信号(信号编号> = {)来完成你想要的工作。 {1}}),而不是使用默认的SIGRTMIN
。