在 NodeJS 中,我能实时检查标准输出吗?

5
我知道在NodeJS中可以使用子进程并获取它们的标准输出。但是,由于我运行的程序需要较长时间,我想实时地检索标准输出。在NodeJS中有没有一种方法可以做到这一点?
以下是我尝试查看文档:http://nodejs.org/docs/v0.5.8/api/child_processes.html#child_process.exec 能帮忙吗?有什么好的想法、模块或技巧吗?

3
这是一个不容易解决的问题,因为当程序的标准输出不是TTY设备时,程序往往会缓冲多于一行的输出内容。通常的解决方法是在伪终端(pseudo-tty)中运行程序,但我不确定能否在node.js中实现。 - Marcelo Cantos
另一方面,如果您不介意以组块形式接收行,其中某些行跨越了组块,则这对您没有影响。 - Marcelo Cantos
2个回答

13

子进程的标准输出/输入/错误都是

查看此页面的相关部分以获取更多信息:http://nodejs.org/docs/latest/api/child_process.html#child_process_child_process_spawn_command_args_options

此部分的示例:

var util  = require('util'),
    spawn = require('child_process').spawn,
    ls    = spawn('ls', ['-lh', '/usr']);

ls.stdout.on('data', function (data) {
  console.log('stdout: ' + data);
});

ls.stderr.on('data', function (data) {
  console.log('stderr: ' + data);
});

ls.on('exit', function (code) {
  console.log('child process exited with code ' + code);
});

1
ps.stdout.on('data', function (data) {
   //...
});

1
你能提供关于这里的ps更多的信息吗? - Eddie Monge Jr
3
很可能是 process.stdout.on - Medet Tleukabiluly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接