在你的代码中:
FILE* file1 = popen ("make", "r");
你可以使用任何shell命令在机器上有用.例如,您可以将标准错误重定向到与标准输出相同的目标,并通过管道捕获两者:
FILE* file1 = popen ("make 2>&1", "r");
进一步阅读:
c popen不会抓住stderr
如何控制popen stdin,stdout,stderr重定向?
虽然技术上可以打开多个管道到子进程,但它比单行调用复杂得多popen
:
C中的这个多管道代码是否有意义?
如何在Unix C中使用两个管道?
使用系统调用fork()的多个管道实现execvp()wait()pipe() - 它根本不起作用