繁体   English   中英

管道到system()?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM