我正在尝试创建一个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
)相同的数据。
答案 0 :(得分:3)
在Node.js的当前稳定版本(0.6.14)中打破了Readline。我们在这里遇到了同样的问题:
https://stackoverflow.com/a/10012306/362536
但是,有一个来自TooTallNate的快速代码片段可以解决您的问题:https://gist.github.com/1785026
有一个拉取请求可以在以后的版本中修复它,它应该在0.7.8版本中。