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

我正在尝试做一个Node.js脚本来分析磁盘使用情况。 为此,我掏出了du ,但我无法弄清楚如何逐行读取subprocess的输出。 以下是我迄今为止所尝试的:

 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应该按行分割它的input,而不是,而是我得到完全相同的数据(du.stdout返回一个缓冲区,但调用.toString()它给了我与linereader相同的数据)。

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

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

但是,TooTallNate中有一个真正快速的代码可以解决这个问题: https ://gist.github.com/1785026

在后来的版本中有一个pull请求来解决这个问题,它应该在0.7.8版本中。