首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用管道让这两个进程(程序)直接相互通信?

如何使用管道让这两个进程(程序)直接相互通信?
EN

Stack Overflow用户
提问于 2010-12-09 12:12:39
回答 2查看 3.1K关注 0票数 4

程序A是一个c程序,它无休止地接收stdin中的输入,处理它并将其输出到stdout。

我想编写程序B(用python),这样它就可以读取A的输出,并将所需的内容反馈给它。注意,每个程序只能有一个实例,因此给定b1和b2,它们是b的实例,而不是:

代码语言:javascript
运行
复制
$ b1 | a | b2

我需要有

代码语言:javascript
运行
复制
$ b1 | a | b1 

以下是最终预期结果的图表:

EN

Stack Overflow用户

发布于 2013-01-22 12:46:52

对于那些通过Google来这里的人来说:实际上有一个使用命名管道的非常好的方法:

首先创建两个名称管道:

代码语言:javascript
运行
复制
mkfifo pipe1
mkfifo pipe2

然后运行以下命令:

代码语言:javascript
运行
复制
echo -n x | cat - pipe1 > pipe2 & cat <pipe2 > pipe1

这将导致cat命令始终相互复制字母x。因此,现在您可以随意使用自己的程序而不是cat来处理输入和输出。这并不局限于python。您还可以将java程序与c++程序连接起来。

例如,如果您的程序名为A.py和B.py,则初始命令为:

代码语言:javascript
运行
复制
echo -n x | ./A.py - pipe1 > pipe2 & ./B.py <pipe2 > pipe1
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4394765

复制
相关文章

相似问题

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