2012-04-19 10 views
6

Ich versuche, ein Node.js-Skript zur Analyse der Festplattenbelegung zu machen. Dafür schreibe ich auf du, aber ich habe Probleme herauszufinden, wie die Ausgabe aus dem Kind-Prozess Zeile für Zeile zu lesen. Hier ist, was ich bisher versucht:Wie liest man in Node.js Zeile für Zeile von einem 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' gerade liest Datenblöcke und während readline angeblich sollte seine Eingabe geteilt durch die Linie, tut es nicht, stattdessen bekomme ich genau die gleichen Daten (du.stdout gibt einen Puffer zurück, aber der Aufruf .toString() darauf gibt mir die gleichen Daten, die ich mit linereader bekommen habe).

Antwort

2

Readline ist in der aktuellen stabilen Version (0.6.14) von Node.js unterbrochen. Wir hatten das gleiche Problem hier:

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

Allerdings gibt es einen echten schnellen Code-Snippet aus TooTallNate ist, dass dieses Problem für Dich behebt: https://gist.github.com/1785026

Es gibt eine Pull-Anforderung dies später zu fixieren Versionen, und es sollte in der Version 0.7.8 sein.

+0

Ah, ich verstehe. Etwas traurig :) – mikl