Nach the docs für child_process.spawn
würde ich erwarten zu können, einen Kind-Prozess im Vordergrund und erlauben dem Knoten Prozess selbst zu verlassen, wie so läuft:node.js: Wie frei stehendes Kind im Vordergrund, um laichen und Ausfahrt
handoff-exec.js
:
'use strict';
var spawn = require('child_process').spawn;
// this console.log before the spawn seems to cause
// the child to exit immediately, but putting it
// afterwards seems to not affect it.
//console.log('hello');
var child = spawn(
'ping'
, [ '-c', '3', 'google.com' ]
, { detached: true, stdio: 'inherit' }
);
child.unref();
Statt den Ausgang des ping
Befehl zu sehen, verlässt er einfach ohne jede Nachricht oder Fehler.
node handoff-exec.js
hello
echo $?
0
So ... ist es möglich, in node.js (oder überhaupt) ein Kind im Vordergrund wie die Eltern Ausfahrten zu laufen?
AKTUALISIEREN: Ich habe festgestellt, dass das Entfernen von console.log('hello');
ermöglicht, dass das Kind ausgeführt wird, es gibt jedoch weiterhin Vordergrund-Std-Steuerelement an das Kind nicht weiter.
Mögliche Duplikate von [Wie höre und spawn mehrere Kindprozess in nodejs] (http://stackoverflow.com/questions/32358845/how-do-listen-and-spawn-multiple-child-process- in-nodejs) –
Nein. Es ging darum, in JavaScript eine Closure zu verwenden, um die JS-Verweise auf mehrere untergeordnete Prozesse zu erfassen. Hier geht es um Prozessreferenzen und die Kontrolle über die Standardeingabe durch das Kind. – CoolAJ86
Für was es wert ist, habe ich versucht, Ihren Code auszuführen und es funktionierte wie erwartet für mich - der Knoten-Prozess beendet, und die Ping-Befehl-Ausgabe wurde auf Standard gedruckt. Dies ist unter Mac OS und node.js v5.4.1. Es funktioniert nicht, wenn ich das console.log auskommentiere - was ich sehr seltsam finde. –