在C程序(p1)中,如何启动动态构造的命令(及其参数),从p1的标准输出读取其标准输入?
注意:
-
除了这个stdout - > stdin管道之外的方法也可以 provided 在Windows和Linux上是 PORTABLE .
-
我不能在这里使用C,Java,Perl,Ruby,Python等 .
此外,它的Windows版本是否具有MinGW依赖性?
REOPENED :下面的问题为Linux解决了这个问题,但这个问题想要一个可移植的方法 . Execute program from within a C program
4 回答
Microsoft C运行时将其称为_popen而不是popen,但它似乎在Windows(用于控制台应用程序)和Linux中具有相同的功能 .
对我而言,这并不是100%清楚你要实现的目标 .
但据我了解,你可以看看Boost.Process
你可以做的事情
然后使用os作为任何流来转储子进程的标准输入中的内容 .
无论如何,使用库w.r.t可以实现很多 . 管道重定向和链接 .
链接的anser(您拒绝)是指POSIX管道 . POSIX是C的扩展,它增加了标准C中缺少的功能.POSIX管道是这种功能的一个很好的例子:它们被添加到POSIX,因为标准C没有这个功能 .
glib库是用C语言编写的,并且具有在Linux和Windows上都经过充分测试的实现 . The manual section on spawning new processes将为您提供有关如何使用 g_spawn_async_with_pipes 调用启动新进程并挂接到其stdin和stdout句柄的信息 .