首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在命名管道(mkfifo)上执行非阻塞fopen?

如何在命名管道(mkfifo)上执行非阻塞fopen?
EN

Stack Overflow用户
提问于 2009-02-24 00:34:22
回答 1查看 40.6K关注 0票数 21

如果我有一个创建并尝试使用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系统上运行)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/580013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档