Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在任何地方都找不到工作示例。MinGW 有_popen(),但他们说它是通过 windows API 实现的,所以应该是可能的。但我能找到的所有示例都是针对 VisualC++ 或其他一些较新的语言,如 C# 等。
_popen()
例如,我尝试为另一个程序制作一个包装器,该程序将以红色显示所有标准错误。
在您的情况下,popen还不够好,您必须使用pipe创建文件句柄,fork创建新进程,close关闭子进程中的旧FILENO_STDIN/ ,并将管道复制到新/ ,最后一个启动新程序的功能。FILENO_STDOUTdup2FILENO_STDINFILENO_STDOUTexec
popen
pipe
fork
close
FILENO_STDIN
FILENO_STDOUT
dup2
exec
换句话说,您基本上必须重新实现该popen功能。
也很常见,网上也有很多例子。