【发布时间】:2010-06-02 09:28:59
【问题描述】:
我正在尝试在 Linux 下编写 2 个服务器/客户端程序,它们通过命名管道进行通信。问题是,有时当我尝试从服务器写入不再存在的管道(客户端已停止)时,我收到“资源暂时不可用”错误并且服务器完全停止。
我知道这是由于在打开 fifo 通道时使用了 O_NONBLOCK 参数引起的,表明程序通常会等到它可以再次写入文件的时间点,但是有没有办法阻止这种行为,而不是如果出现问题,停止整个程序(写命令不应该返回 -1 并且程序正常继续)?
还有一个奇怪的地方是,这个错误只有在ide(eclipse)之外运行程序时才会出现。如果我在 Eclipse 中运行这两个程序,写入函数出错时只返回 -1 并且程序正常继续。
【问题讨论】:
标签: c++ c linux concurrency