2013-05-30 97 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时间的变化,而不是内容的变化。 –