2013-07-16 35 views
0

問題:如何使用C++或bash/shell腳本評估長時間運行的linux進程的輸出?使用C++或Bash/Shell腳本評估後臺linux命令的輸出

例子:

[email protected]~# iw event 
(This command will run until manually killed.) 
(It will output data that I will want to read and parse line by line.) 

什麼是當一個新的行被添加到它的緩衝區,以評估該命令的輸出性病最有效的方法是什麼?

例如:IW事件將輸出線,上面寫着:

new station: 0e:0e:20:2d:20 

我想檢測「新站」,並運行的MAC地址另一個命令。 IE:

./myProgram -mac 0e:0e:20:2d:20 

謝謝!

+0

如果你要求的最有效的方式,你能想象什麼樣的方式? – stefan

回答

1

如果您運行命令如圖所示,所有輸出將轉到stdout並顯示在終端上。要捕獲輸出,您有幾個選項:

  • 將輸出傳輸到您的監視器程序,如iw events | yourmonitorprogram,然後讀取stdin。應該修改iw以使用無緩衝輸出。
  • 寫的iw輸出到一個文件,然後使用相同的技術tail -f命令來查詢該文件定期
  • iw寫入命名管道或插座,並有從這個管道或插座讀你的監控程序。此選項需要修改爲iw

最簡單的方法是第一個

+0

將輸出管道配置爲監控程序效果很好。謝謝! – Fostah

+0

線路緩衝輸出應該也可以。 –