【发布时间】:2015-10-02 17:53:52
【问题描述】:
因此,如果我在 gcc stdio.h 中使用 popen(),我可以将父母的标准输出通过管道传输到其孩子的标准输入,或者我可以将孩子的标准输出通过管道传输到父母的标准输入。我想同时做这两件事。有没有办法使用 popen 来做到这一点,还是我需要使用较低级别的工具(如共享内存)来完成这项工作?
注意:看起来在 FreeBSD 中 popen 可以通过 "r+" 读写。我不明白孩子的标准输出是如何通过管道传输到父母和父母的标准输出的。无论如何,这可能对我有用,但在 Linux 中似乎并非如此。如果我在这一点上弄错了,那将回答我的问题。这是我收到此注释的链接:https://www.freebsd.org/cgi/man.cgi?query=popen&sektion=3
注意 2:我更喜欢一种可以在几乎所有 Linux 发行版、FreeBSD 和 OSX 上按优先级排列的可移植解决方案。话虽如此,我很乐意至少让它在 Ubuntu 14.04 中运行。
【问题讨论】:
-
一个简单的使用管道进行双向通信的方法是打开两个管道,一个用于父子到子,一个用于子到父