【发布时间】:2011-10-08 09:42:32
【问题描述】:
我正在用 C 语言在 Linux 上编写程序,我想等待(使用 select 或 poll)管道文件描述符损坏,例如我想等到后续 write(2) 将返回 EPIPE(或将发送 SIGPIPE)。将文件描述符添加到 writefds 或 select 的 exceptfds 参数并不能解决问题。我知道我可以通过创建多个进程或线程来解决这个问题,但是在这个问题上我只对单进程、单线程的解决方案感兴趣,最好涉及 select 和 poll em> (因为我也想等待其他文件描述符事件)。我无法对管道的另一端是谁做出任何假设——如果这些进程在进程树中很远,则解决方案必须有效。
我更喜欢在许多 Unix 系统(不仅仅是 Linux)上可移植的解决方案。
【问题讨论】: