1

是否可以使用节点启动并继续捕获某个 bash 进程的输出?例如:假设我正在运行tail /some/file,我怎样才能继续聆听打印的每一行新行并对输出采取行动?

4

2 回答 2

9
var spawn = require('child_process').spawn,
    tail  = spawn('tail', ['-f', '/tmp/somefile']);
tail.stdout.pipe(process.stdout);

child_process 模块有据可查

于 2012-07-13T07:50:02.137 回答
6

为了完整起见,我也添加了这个答案。

您可以child_process.spawn用来生成一个进程并监控它的输出。但是,对于不会长时间或连续运行的命令(如 tail、cat 等),您可以直接使用child_process.exec它,它会捕获整个输出stdoutstderr一次性提供给您。

var cp = require("child_process");

cp.exec("tail /some/file", function (err, stdout, stderr) {
    // If an error occurred, err will contain that error object
    // The output for the command itself is held in stdout and stderr vars
});
于 2012-07-13T16:21:01.453 回答