因此,如果我在gcc stdio.h中使用popen(),我可以将父级的stdout传递给其子级的stdin,或者我可以将子级的stdout传递给父级的stdin.我想同时做两件事.有没有办法使用popen来做到这一点,或者我是否需要使用较低级别的工具(如共享内存)来完成这项工作?
注意:在FreeBSD中看起来popen可以用"r +"进行读写.我不明白孩子的stdout是如何通过管道输送到父母和父母的标准输出.不管怎么说,这可能对我有用,但在Linux中似乎并非如此.如果我在这一点上弄错了,那就会回答我的问题.以下是我收到此说明的链接:https://www.freebsd.org/cgi/man.cgi?query = popen&sektion = 3
注2:我更喜欢按照优先顺序在几乎所有Linux发行版,FreeBSD和OSX上移植的解决方案.话虽这么说,我很乐意至少让它在Ubuntu 14.04中运行.
你是绝对正确的.
有些环境支持带有双向管道的"增强型"popen() - 但它不是"标准".
如果你想要移植到所有版本的'nix(Linux,BSD,OSX等),你应该使用"pipe/fork/dup2":