【问题标题】:How do I wait for an EPIPE on Linux and Unix?如何在 Linux 和 Unix 上等待 EPIPE?
【发布时间】:2011-10-08 09:42:32
【问题描述】:

我正在用 C 语言在 Linux 上编写程序,我想等待(使用 selectpoll)管道文件描述符损坏,例如我想等到后续 write(2) 将返回 EPIPE(或将发送 SIGPIPE)。将文件描述符添加到 writefdsselectexceptfds 参数并不能解决问题。我知道我可以通过创建多个进程或线程来解决这个问题,但是在这个问题上我只对单进程、单线程的解决方案感兴趣,最好涉及 selectpoll em> (因为我也想等待其他文件描述符事件)。我无法对管道的另一端是谁做出任何假设——如果这些进程在进程树中很远,则解决方案必须有效。

我更喜欢在许多 Unix 系统(不仅仅是 Linux)上可移植的解决方案。

【问题讨论】:

    标签: linux select epipe


    【解决方案1】:

    在管道的写入端使用 POLLHUP 调用 poll(2) 似乎在 Linux 上起到了作用。

    【讨论】:

      猜你喜欢
      • 2015-03-06
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 2015-03-02
      • 2018-08-31
      相关资源
      最近更新 更多