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
?