2012-08-07 141 views
10

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

例如:

system("ls"); 

会列出当前目录到stdout的内容,我想能够捕获数据到一个变量编程在C

我如何做这个?

谢谢。

回答

13

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

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

谢谢,工作。 – user1118764 2012-08-07 08:06:08