管道到系统()?

时间:2014-06-28 19:29:43

标签: c linux command-line

我有一个用gets()读取输入的二进制文件。

我想在我自己的程序中使用system()执行它并输入管道输入。这怎么可能?

在命令行上我会echo 'blabla' | ./a.out。现在我想基本上在C程序中做同样的事情,在该程序中生成blabla,然后执行a.out并将blabla传送给它。

我无法更改第一个接受命令行参数的程序。

2 个答案:

答案 0 :(得分:4)

  

我有一个用gets()读取输入的二进制文件。

不要使用它。 gets()在任何情况下都不安全。

在回答您的问题时,您可以使用popen()将输入传输到子流程。

答案 1 :(得分:2)

请记住,system实际上运行了一个shell,因此您可以执行所需的任何shell命令,包括管道。除非您生成需要在循环中发送的输出或类似的输出,否则popen没有任何优势(特别是,它不允许您写入程序' s {{1并且还可以从中读取stdin)。所以你可以像这样使用stdout

system