8

我正在尝试制作一个 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)。

4

1 回答 1

3

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

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

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

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

于 2012-04-19T14:12:15.667 回答