首页 文章

在** portable C **中,如何启动连接命令's stdin to the launcher' s stdout的命令?

提问于
浏览
2

在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 回答

  • 1

    Microsoft C运行时将其称为_popen而不是popen,但它似乎在Windows(用于控制台应用程序)和Linux中具有相同的功能 .

  • 1

    对我而言,这并不是100%清楚你要实现的目标 .

    但据我了解,你可以看看Boost.Process

    你可以做的事情

    bp::child cs = p.start();
     bp::postream& os = cs.get_stdin();
    

    然后使用os作为任何流来转储子进程的标准输入中的内容 .

    无论如何,使用库w.r.t可以实现很多 . 管道重定向和链接 .

  • 2

    链接的anser(您拒绝)是指POSIX管道 . POSIX是C的扩展,它增加了标准C中缺少的功能.POSIX管道是这种功能的一个很好的例子:它们被添加到POSIX,因为标准C没有这个功能 .

  • 4

    glib库是用C语言编写的,并且具有在Linux和Windows上都经过充分测试的实现 . The manual section on spawning new processes将为您提供有关如何使用 g_spawn_async_with_pipes 调用启动新进程并挂接到其stdin和stdout句柄的信息 .

相关问题