在 C 程序 (p1) 中,如何启动从 p1 的标准输出读取其标准输入的动态构造命令(及其参数)?
注意:
除了这个 stdout --> stdin 管道之外的方法也可以,只要 它在 Windows 和 Linux 上是可移植的。
我不能在这里使用 C++、Java、Perl、Ruby、Python 等。
此外,这是否会对其 Windows 构建有 MinGW 依赖项?
REOPENED:下面的问题为 Linux 提供了答案,但这个问题需要一种可移植的方法。 从 C 程序中执行程序
在 C 程序 (p1) 中,如何启动从 p1 的标准输出读取其标准输入的动态构造命令(及其参数)?
注意:
除了这个 stdout --> stdin 管道之外的方法也可以,只要 它在 Windows 和 Linux 上是可移植的。
我不能在这里使用 C++、Java、Perl、Ruby、Python 等。
此外,这是否会对其 Windows 构建有 MinGW 依赖项?
REOPENED:下面的问题为 Linux 提供了答案,但这个问题需要一种可移植的方法。 从 C 程序中执行程序
老实说,我并不是 100% 清楚你想要达到的目标。
但据我了解,您可以看看Boost.Process
你可以做类似的事情
bp::child cs = p.start();
bp::postream& os = cs.get_stdin();
然后将os用作任何流来将内容转储到子进程的标准输入中。
无论如何,使用库 wrt 管道重定向和链接可以实现很多目标。
链接的分析器(您拒绝)指的是 POSIX 管道。POSIX 是 C 的扩展,它添加了标准 C 中缺少的功能。POSIX 管道是此类功能的一个很好的例子:它们被添加到 POSIX 是因为标准 C 没有该功能。
glib 库是用 C 编写的,其实现在 Linux 和 Windows 上都经过了很好的测试。 有关生成新进程的手册部分将为您提供有关如何使用g_spawn_async_with_pipes调用启动新进程并挂钩其标准输入和标准输出句柄的信息。