从C中的stdout输出系统命令

use*_*764 15 c stdout

我正在Android/Linux下编写一个运行系统命令的C程序.该命令将一些文本输出到stdout,我正在尝试将输出捕获到字符串或字符数组中.

例如:

system("ls");
Run Code Online (Sandbox Code Playgroud)

会将当前目录的内容列为stdout,我希望能够以C编程方式将该数据捕获到C中.

我该怎么做呢?

谢谢.

jxh*_*jxh 18

你想用popen.它返回一个流,就像fopen.但是,您需要关闭流pclose.这是因为pclose需要清理与启动子进程相关的资源.

FILE *ls = popen("ls", "r");
char buf[256];
while (fgets(buf, sizeof(buf), ls) != 0) {
    /*...*/
}
pclose(ls);
Run Code Online (Sandbox Code Playgroud)