Yes, you can. With child_process.spawn
. While child_process.exec
executes the command and buffers the output, spawn
gives you events on data
, error
and end
. So you can listen to that and calculate your progress. There's a basic example in the node docs for spawn.
Update: I saw your other question. You can use wget
for this, but I recommend the nodejs module request instead. Here's how to fetch the file with request:
var request = require("request");
request(url, function(err, res, body) {
// Do funky stuff with body
});
If you want to track progress, you pass a callback to onResponse
:
function trackProgress(err, res) {
if(err)
return console.error(err);
var contentLength = parseInt(res.headers["content-length"], 10),
received = 0, progress = 0;
res.on("data", function(data) {
received += data.length;
progress = received / contentLength;
// Do funky stuff with progress
});
}
request({url: url, onResponse: trackProgress}, function(err, res, body) {
// Do funky stuff with body
});