如何在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版本中。