2010-07-12 68 views
1

我正在用c代碼做一些文件IO。我在我的文件中有一個特定的模式。我可以通過shell命令cat abc.txt | grep abc | wc -l來驗證。當我使用System()執行相同的命令時,它會給出正確的輸出,但我不知道如何將其輸出轉換爲變量並將其與我的c代碼本身進行比較。如何讀取系統輸出('ls')?

我試着看看建議使用WEXITSTATUS()的手冊頁。這實際上會返回執行狀態而不是輸出。

F1!

+3

請注意,不要分析'ls'的輸出。並且請注意,比通過'system()'調用shell的文件IO有更好的選擇。 – Stephen 2010-07-12 19:25:19

+0

「F1」是什麼意思? – bk1e 2010-07-13 06:23:55

回答

7

你不想要system(3)。嘗試popen(3)和朋友。

+0

+1這裏是這個http://www.metalshell.com/source_code/23/Popen.html – DRL 2010-07-12 19:25:08

+0

的一個例子他們有同樣的問題,調用shell? – Tom 2010-07-12 19:25:59

+0

@Tom我會認爲唯一的主要問題是如果程序請求執行不在調用進程的$ PATH – DRL 2010-07-12 19:28:31

1

什麼grep和wc正在做的是讀取STDIN文件句柄作爲管道的一部分|運營商。