问题 从C中的stdout输出系统命令


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

例如:

system("ls");

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

我该怎么做呢?

谢谢。


4644
2017-08-07 07:02


起源



答案:


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

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

15
2017-08-07 07:06



谢谢,这很有效。 - user1118764
这只获取输出流,ho也可以得到错误流? - Shashank Singh
@ShashankSingh tio.run/... - jxh


答案:


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

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

15
2017-08-07 07:06



谢谢,这很有效。 - user1118764
这只获取输出流,ho也可以得到错误流? - Shashank Singh
@ShashankSingh tio.run/... - jxh