使用C与Shell进行交互

我有一个名为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()来关闭它。 否则,您可以使用与文件流相同的方式与管道进行交互。 非常容易使用和有用。

这是一个用例示例的链接

另外看看这个例子,说明一种方法来做你正在做的事情:

 #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); }