如何在Node.js中逐行读取child_process?

时间:2012-04-19 14:03:25

标签: node.js readline child-process

我正在尝试创建一个Node.js脚本来分析磁盘使用情况。为此,我向du发出请求,但我无法弄清楚如何逐行读取子进程的输出。这是我到目前为止所尝试的内容:

var spawn = require("child_process").spawn,
    rl = require('readline'),
    du = spawn('du', ['/home']);
    linereader = rl.createInterface(du.stdout, du.stdin);

// Read line by line.
//du.stdout.on('data', function (data) {
linereader.on('line', function (data) {
  console.log(data);
});

du.stdout.on('data'只是读取数据块,虽然readline应该按行分割它的输入,但它不会,而是我得到完全相同的数据(du.stdout返回一个缓冲区,但是在其上调用.toString()会给我与linereader)相同的数据。

1 个答案:

答案 0 :(得分:3)

在Node.js的当前稳定版本(0.6.14)中打破了Readline。我们在这里遇到了同样的问题:

https://stackoverflow.com/a/10012306/362536

但是,有一个来自TooTallNate的快速代码片段可以解决您的问题:https://gist.github.com/1785026

有一个拉取请求可以在以后的版本中修复它,它应该在0.7.8版本中。