Linux中的双向pipe道

所以,如果我在gcc stdio.h中使用popen(),我可以将一个父级的stdout传递给它的孩子的stdin,或者我可以将孩子的stdout传给父级的stdin。 我想同时做两个。 有没有办法做到这一点使用popen,或者我需要使用较低级别的工具(如共享内存)这个工作?

注意:它在FreeBSD中看起来像popen可以用“r +”读写。 我不明白孩子的标准输出是如何通过父母和父母的标准输出。 无论如何,这可能会对我有用,但在Linux中似乎并不是这样。 如果我误解了这一点,那会回答我的问题。 这里是我得到这个笔记的链接: https : //www.freebsd.org/cgi/man.cgi?query=popen&sektion=3

注2:我更喜欢按照优先顺序,在几乎所有的Linux发行版,FreeBSD和OSX上都可移植的解决scheme。 话虽如此,我很乐意至less在Ubuntu 14.04中工作。

你绝对正确。

有些环境支持双向管道的“增强型”popen(),但它不是“标准”。

如果你想移植到所有版本的nix(Linux,BSD,OSX等),你应该使用“pipe / fork / dup2”:

  • popen同时读写

  • popen读写(两者)如何