Według the docs dla child_process.spawn
chciałbym oczekiwać, aby móc uruchomić proces potomny na pierwszym planie i pozwalają sam proces węzła, aby wyjść tak:node.js: Jak na tarło wolnostojący dziecko na pierwszym planie i wyjściem
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();
Zamiast widzieć wyjście komendy na ping
, to po prostu wychodzi bez żadnego komunikatu lub błędu.
node handoff-exec.js
hello
echo $?
0
A więc ... czy w pliku node.js (lub w ogóle) możliwe jest uruchamianie elementu potomnego na pierwszym planie w momencie wyjścia elementu nadrzędnego?
UPDATE: Uważam, że usunięcie console.log('hello');
pozwala dziecku do uruchomienia, jednak nadal nie przechodzi pierwszoplanowy kontrolę stdin do dziecka.
Możliwy duplikat [Jak słuchać i odradzać wiele procesów potomnych w nodejs] (http://stackoverflow.com/questions/32358845/how-do-i-listen-and-spawn-multiple-child-process- in-nodejs) –
Nie. Chodziło o użycie zamknięcia w JavaScript do przechwytywania odwołań JS do wielu procesów podrzędnych. Chodzi o referencje procesowe i umożliwienie dziecku przejęcia kontroli nad standardowym wejściem. – CoolAJ86
Po to, co jest warte, próbowałem uruchomić twój kod i działało zgodnie z oczekiwaniami - proces węzłowy został zakończony, a wyniki polecenia ping zostały wypisane na standardowe wyjście. Dotyczy to systemów Mac OS i node.js w wersji 5.4.1. To nie działa, jeśli odkomentuję plik console.log, który uważam za bardzo dziwny. –