【发布时间】:2011-07-15 06:06:49
【问题描述】:
我有一个在两个进程之间创建管道的程序。一个进程不断监视另一个进程的输出,当遇到特定输出时,它会通过另一个管道使用write() 函数提供输入。不过,我遇到的问题是管道的内容在我close() 管道之前不会进入另一个进程的标准输入流。我希望这个程序在每次遇到它正在寻找的输出时无限循环并做出反应。有什么方法可以在不关闭管道的情况下将输入发送到其他进程?
我搜索了一下,发现命名管道可以在关闭后重新打开,但是我想知道是否还有其他选择,因为我已经编写了使用未命名管道的代码并且我还没有学会使用命名管道。
【问题讨论】:
-
第一个进程如何写入管道?如果它使用
fprintf()等,那么它的输出可能正在被缓冲。调用fflush()应该会推送数据。 -
它正在使用类似于
write(pipe[1], string, strlen(string));的行写入管道。fflush()看起来很有希望,我会试试看。
标签: c++ c file-io pipe named-pipes