【问题标题】:How to read from a child_process line by line in Node.js?如何在 Node.js 中逐行读取 child_process?
【发布时间】:2012-04-19 14:03:24
【问题描述】:

我正在尝试制作一个 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 相同的数据。

【问题讨论】:

    标签: node.js readline child-process


    【解决方案1】:

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

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

    不过,TooTallNate 提供了一个真正快速的 sn-p 代码,可以为您解决这个问题:https://gist.github.com/1785026

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

    【讨论】:

      猜你喜欢
      • 2012-01-24
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      • 2014-12-22
      • 2019-07-11
      • 2020-01-29
      • 2019-04-17
      相关资源
      最近更新 更多