node.js child_process.spawn no stdout es sei denn 'inherit'

Ich versuche, die stdout von einem zu erfassenspawnedchild_process imnode.js (0.10.29).

Im Moment versuche ich es nur mitping

Der folgende Code wird nicht gedruckt (pingt aber)

var exec = require('child_process').exec;
var spawn = require('child_process').spawn;
var util = require('util')

var ping = spawn('ping', ['127.0.0.1'], {stdio: 'pipe'});

ping.stdout.on('data', function(data){
    util.print(data);
})

ping.stderr.on('data', function(data){
    util.print(data);
})

Wenn ich mich änderestdio: 'pipe' zustdio: 'inherit' und die loswerdenstdout/stderr Haken wie folgt:

var ping = spawn('ping', ['127.0.0.2'], {stdio: 'inherit'});

// ping.stdout.on('data', function(data){
//  util.print(data);
// })

// ping.stderr.on('data', function(data){
//  util.print(data);
// })

Ich bekomme

PING 127.0.0.2 (127.0.0.2): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1

Wenn ich die Adresse von ändere127.0.0.2 zu127.0.0.1, von denen ich weiß, dass sie auf die Pings antworten und den ursprünglichen Code verwenden, den ich erhalte

PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.060 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.152 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.124 ms

Irgendwelche Ideen, warum stdout / stderr nicht feuerndata Ereignisse, bei denen der Ping nicht istpinging oderinheriting?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage