2013-05-30 92 views
0

我想用node.js編寫adb logcat命令的接口,並且需要一些幫助讓我的函數執行連續和異步回調。這個命令生成我想在生成時發送給回調函數的常量輸出(不是在我讓它運行一段時間然後停止之後)。這是否可能與node.js,如果是的話,我該怎麼做?var exec = require('child_process')。exec;回調連續運行的命令

這裏是我到目前爲止的代碼

exports.logcat = function(options, callback){ 
    var logcatCmd = "adb logcat" + options; 
    console.log("sending command: " + logcatCmd); 
    exec(logcatCmd, function(error, stdout, stderr){ 
     if(error !== null){ 
      console.log("encountered error = " + error); 
     } 
     callback(stdout); 
    }); 
}; 

回答

1

總之,沒有;您不能使用watch shell命令處理新輸出,這與您可以通過更改文件或套接字傳輸數據的方式相同。

如果它產生的是恆定輸出,它很可能只是從某個日誌文件中讀取並在屏幕上打印出 。你應該找出它從哪個文件獲取數據,並使用fs.watchreadableStream來連續獲取數據流。

+0

如果我運行一個命令將數據發送到文件,即adb logcat> myfile.txt,我可以使用fs.watch連續檢查該文件的更改嗎? – ceptno

+0

那麼,該命令不會重複運行,您可能必須將其放入'setInterval'中。但如果你能做到這一點,是的,這將起作用。 但是這與循環運行'exec'沒有什麼不同,因爲'fs.watch'尋找上次訪問/ mod時間的變化,而不是內容的變化。 –