我有一个名为TEST的二进制文件,它生成一个bash shell,我希望编写一个运行TEST的C程序,然后将命令传递给它生成的bash shell - 我试过以下 - 有人可以指出这是不是可能。我可以使用该文件运行,但不知道如何将命令传递给shell它会产生:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
system("/var/testfolder/TEST"); #run the test file
return 0;
}
答案 0 :(得分:3)
UNIX样式的popen()函数是您想要使用的。 有关详细信息,请参见手册页。
它在子进程中运行您的命令,并为您提供与之交互的管道。它返回一个像fopen()那样的FILE句柄,但你用pclose()而不是fclose()来关闭它。否则,您可以使用与文件流相同的方式与管道交互。非常容易使用和有用。
这是一个link to a use case示例
另请查看此示例,说明执行您要执行的操作的方法:
#include <stdio.h>
int main(void) {
FILE *in;
extern FILE *popen();
char buf[512];
if (!(in = popen("ls -sail", "r")))
exit(1);
while (fgets(buf, sizeof(buf), in) != NULL)
printf("%s", buf);
pclose(in);
}