[英]Piping to system()?
我有一个二进制文件,它使用gets()读取输入。
我想在自己的程序中使用system()并通过管道输入对其执行。 这怎么可能?
在命令行上,我只是echo 'blabla' | ./a.out
echo 'blabla' | ./a.out
。 现在,我想基本上在C程序中执行相同的操作,在该程序中生成blabla,然后执行a.out并将其通过blabla传递给它。
我无法将第一个程序更改为接受命令行参数。
我有一个二进制文件,它使用gets()读取输入。
不要使用它。 在任何情况下, gets()
都不安全使用。
为了回答您的问题,您可以使用popen()
将输入传递到子流程中。
请记住, system
实际上运行的是Shell,因此您可以执行所需的任何Shell命令,包括管道。 除非您生成需要循环发送的输出,否则popen
没有任何优势(特别是,它不允许您写入程序的stdin
并从其stdout
读取)。 因此,您可以只使用像这样的system
:
// generate the string you want to send
char str[256] = "blabla";
// sprintf it into a command string
char cmd[256];
sprintf(cmd, "echo '%s' | ./a.out", str);
// send the command string to system
system(cmd);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.