【发布时间】:2012-08-07 07:02:13
【问题描述】:
我正在 Android/Linux 下编写一个运行系统命令的 C 程序。该命令将一些文本输出到标准输出,我正在尝试将输出捕获到字符串或字符数组中。
例如:
system("ls");
会将当前目录的内容列出到标准输出,我希望能够在 C 中以编程方式将该数据捕获到变量中。
我该怎么做?
谢谢。
【问题讨论】:
我正在 Android/Linux 下编写一个运行系统命令的 C 程序。该命令将一些文本输出到标准输出,我正在尝试将输出捕获到字符串或字符数组中。
例如:
system("ls");
会将当前目录的内容列出到标准输出,我希望能够在 C 中以编程方式将该数据捕获到变量中。
我该怎么做?
谢谢。
【问题讨论】:
您想使用popen。它返回一个流,例如fopen。但是,您需要使用pclose 关闭流。这是因为pclose 负责清理与启动子进程相关的资源。
FILE *ls = popen("ls", "r");
char buf[256];
while (fgets(buf, sizeof(buf), ls) != 0) {
/*...*/
}
pclose(ls);
【讨论】: