Secondo the docs per child_process.spawn
mi aspetterei di essere in grado di eseguire un processo figlio in primo piano e consentire il processo nodo stesso per uscire in questo modo:node.js: Come per deporre le uova bambino distaccata in primo piano e l'uscita
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();
Invece di vedere l'output del comando ping
, esce semplicemente senza alcun messaggio o di errore.
node handoff-exec.js
hello
echo $?
0
Quindi ... E 'possibile in node.js (o affatto) per eseguire un bambino in primo piano come le uscite genitore?
UPDATE: Ho scoperto che la rimozione di console.log('hello');
consente al bambino di funzionare, tuttavia, non passa ancora il controllo dello stdin in primo piano al bambino.
Possibile duplicato di [Come ascoltare e generare più processi figlio in nodejs] (http://stackoverflow.com/questions/32358845/how-do-i-listen-and-spawn-multiple-child-process- in-nodejs) –
No. Si trattava di utilizzare una chiusura in JavaScript per acquisire i riferimenti JS a più processi figlio. Si tratta di riferimenti al processo e consente al bambino di assumere il controllo dell'input standard. – CoolAJ86
Per quello che vale, ho provato a eseguire il codice e ha funzionato come previsto per me: il processo del nodo è terminato e l'output del comando ping è stato stampato su stdout. Questo è su Mac OS e node.js v5.4.1. Non funziona se annullo il console.log - che trovo molto strano. –