Ich versuche, die Stdout von einem spawn
ed child_process
in node.js
(0.10.29) zu erfassen.node.js child_process.spawn kein stdout außer 'erben'
Im Moment versuche ich nur mit ping
Der folgende Code druckt nicht (aber tut 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);
})
Wenn ich stdio: 'pipe'
-stdio: 'inherit'
und loszuwerden, die stdout/stderr
Haken ändern wie so:
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
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 ändern die Adresse 127.0.0.2
-127.0.0.1
, die ich kenne, wird auf die Pings reagieren und den ursprünglichen Code verwende ich bekommen
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 data
Ereignisse feuern, wenn die Ping ist nicht pinging
oder inheriting
?
was meinst du mit 'druckt nicht (aber ping)'? – Mritunjay
Der 'Ping'-Prozess läuft und pingt localhost, aber das Knotenprogramm druckt nicht nach stdout. – dbenny
aber ich habe Ihren Code kopiert und es funktioniert gut, denke ich. – Mritunjay