![]() |
1
2
想到的最明显的解决方案是,被轮询/选择的文件描述符之一将是一个非常特殊的文件描述符,它是为特定目的保留的。当你想“突破”select/poll/epoll时,你只需要对这个非常特殊的文件描述符进行适当的安排,就可以进行读取,这就会实现。 在select/poll/epoll返回后,您将检查该文件描述符,就像检查任何其他描述符一样,并根据该事件中发生的任何情况进行处理。因此,这个问题剩下的唯一部分是,这将是一个什么样的非常特殊的文件描述符?
好吧,既然你用标记了你的问题
您可以在流程中关闭本机信号处理,并且 create a signal file descriptor 然后,发送到进程的信号转换为信号文件描述符可供读取,并从中读取,如手册页中所述,告诉您信号已被接收。 一 event file descriptor 可能是另一种选择,这种方式更适合同一进程中的不同线程相互通知。
事件和信号文件描述符都是可轮询/可选择的。而且总是有一种老派的方法来创建
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 4 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 4 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 5 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 5 月前 |