如果我有一个创建并尝试使用mkfifo打开命名管道的程序,我如何才能在不阻塞的情况下打开一个读写管道?
具体地说,我正在编写一个C程序,它可以在有或没有gui的情况下运行(用Java编写)。
在C程序中,我使用mkfifo成功地创建了命名管道,但是当我这样做时
FILE* in = fopen(PIPE_IN, "r"); /* Where PIPE_IN is the filename*/
直到GUI打开该管道进行写入,fopen才会返回。我想要做的是,一旦GUI决定对其进行写操作,就可以读取该管道--我将把文件描述符放在一个select()调用中。预期java GUI可能永远不会真正启动是合理的,因此我不能依赖它在任何特定的点上打开管道的另一端,甚至根本不能。
我还将打开第二个管道进行编写,我假设我也会遇到同样的问题。此外,我不能在没有阅读器的输出管道上设置O_NONBLOCK。
有什么建议吗?
(它在linux系统上运行)
https://stackoverflow.com/questions/580013
复制相似问题