我有一个用gets()读取输入的二进制文件。
我想在我自己的程序中使用system()执行它并输入管道输入。这怎么可能?
在命令行上我会echo 'blabla' | ./a.out
。现在我想基本上在C程序中做同样的事情,在该程序中生成blabla,然后执行a.out并将blabla传送给它。
我无法更改第一个接受命令行参数的程序。
答案 0 :(得分:4)
我有一个用gets()读取输入的二进制文件。
不要使用它。 gets()
在任何情况下都不安全。
在回答您的问题时,您可以使用popen()
将输入传输到子流程。
答案 1 :(得分:2)
请记住,system
实际上运行了一个shell,因此您可以执行所需的任何shell命令,包括管道。除非您生成需要在循环中发送的输出或类似的输出,否则popen
没有任何优势(特别是,它不允许您写入程序' s {{1并且还可以从中读取stdin
)。所以你可以像这样使用stdout
:
system