2012-04-19 16 views
6

Próbuję utworzyć skrypt Node.js do analizy użycia dysku. W tym celu wypuszczam numer du, ale mam problem z ustaleniem, jak odczytać dane wyjściowe z podrzędnej linii proces po linii. Oto, co starałem dotąd:Jak odczytać wiersz child_process po linii w pliku Node.js?

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' właśnie czyta fragmenty danych, a jednocześnie readline powinno rzekomo podzielić swoje wejście po linii, nie, zamiast uzyskać te same dane (du.stdout zwraca bufor, ale wywołanie na nim .toString() daje mi te same dane, które otrzymałem z linereader).

Odpowiedz

2

Readline jest uszkodzony w obecnej stabilnej wersji (0.6.14) Node.js. Mieliśmy ten sam problem tutaj:

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

Jednakże, istnieje realne szybkie fragment kodu z TooTallNate które rozwiązuje ten problem dla Ciebie: https://gist.github.com/1785026

Jest prośba ciągnąć to naprawić później wersje i powinno być w wersji 0.7.8.

+0

Ah, rozumiem. Trochę smutne :) – mikl

Powiązane problemy