2012-04-19 13 views
6

ディスクの使用状況を分析するためにNode.jsスクリプトを作成しようとしています。このため、私はduにシェルしていますが、子プロセスの出力を行ごとに読み取る方法を理解するのに問題があります。ここで私はこれまで試したものです:Node.jsの行ごとにchild_processを読み込む方法は?

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と同じデータが得られます)。

答えて

2

Node.jsの現在の安定版(0.6.14)でReadlineが壊れています。 https://gist.github.com/1785026

これを後で修正するためにプル要求があります:あなたのため、この問題を修正TooTallNateからのコードの本当の迅速なスニペットがある、しかし

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

:私たちはここに同じ問題を抱えていました0.7.8リリースに含まれている必要があります。

+0

ああ、そうです。 Kinda悲しい:) – mikl

関連する問題