2012-04-19 42 views
6

Tôi đang cố tạo kịch bản Node.js để phân tích mức sử dụng đĩa. Đối với điều này, tôi vỏ ra du, nhưng tôi gặp khó khăn trong việc tìm ra cách đọc đầu ra từ dòng xử lý con theo dòng. Đây là những gì tôi đã cố gắng cho đến nay:Cách đọc từ dòng child_process bằng dòng trong 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' chỉ đọc khối dữ liệu, và trong khi readline cho là nên chia đầu vào của nó theo dòng, không, thay vào đó tôi có được các dữ liệu chính xác cùng (du.stdout trả về một bộ đệm, nhưng gọi .toString() trên nó mang lại cho tôi cùng một dữ liệu tôi nhận được với linereader).

Trả lời

2

Đường dây được chia nhỏ trong phiên bản ổn định hiện tại (0.6.14) của Node.js. Chúng tôi đã có cùng một vấn đề ở đây:

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

Tuy nhiên, có một đoạn nhanh chóng thực sự của mã từ TooTallNate điều này khắc phục vấn đề này cho bạn: https://gist.github.com/1785026

Có một yêu cầu kéo để sửa lỗi này ở sau các phiên bản, và nó phải nằm trong bản phát hành 0.7.8.

+0

Ah, tôi hiểu. Kinda buồn :) – mikl

Các vấn đề liên quan