node.js child_process.spawn нет стандартного вывода, если не «наследовать»

Я пытаюсь захватить стандартный выход изspawnизданиеchild_process вnode.js (0.10.29).

Сейчас я просто пытаюсьping

Следующий код не печатает (но делает пинг)

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);
})

Если я изменюstdio: 'pipe' вstdio: 'inherit' и избавиться отstdout/stderr крючки вот так:

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);
// })

я получил

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

Если я изменю адрес с127.0.0.2 в127.0.0.1, который я знаю, будет отвечать на эхо-запросы и использовать исходный код, который я получаю

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

Любые идеи, почему stdout / stderr не стреляютdata события, когда пинг неpinging или жеinheriting?

Ответы на вопрос(1)

Ваш ответ на вопрос