我有一个名为 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;
}
最佳答案
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);
}
关于c - 使用 C 与 Shell 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29199343/