2015-12-24 31 views
0

我有一个关于read()与“资源暂时不可用”的问题。 我使用PIPE作为线程间的IPC。poll()和read()“资源暂时不可用”

在我的程序中,阅读线程检查PIPE是否有使用poll()的数据,然后使用来自PIPE的read()。 但是,有时read()返回-1并出现以下错误。

资源暂时不可用

我不知道为什么之后read()返回错误poll()检查。

+0

你确定你从来没有尝试读'poll' *没有*说它是可读的吗? “poll”表示它可读后,你不会调用'read'两次或更多次? (在任何一种情况下,它可能都不可读) – immibis

+0

这本身不是问题。当你得到这个特定的错误时,这意味着此时没有数据。因此,只要采取相应措施,并等待数据到达(例如返回到您的poll()并等待它通知您可以读取的数据()) – nos

回答

3

您可能已将管道fd设置为非阻塞模式O_NONBLOCK,并且当读取发生在空文件上时,它将返回EAGAIN。

相关问题