2012-08-07 140 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