8

私はそうのように終了するノードのプロセス自体をフォアグラウンドで子プロセスを実行し、許可することができるように期待child_process.spawnためthe docsによると:のNode.js:フォアグラウンドと出口に切り離された子を起動する方法

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(); 

代わりpingコマンドの出力を見ての、それは単純に任意のメッセージやエラーなしで終了します。

node handoff-exec.js 
hello 
echo $? 
0 

そう...それはNode.jsの中で可能である(または全ての)親が終了するとフォアグラウンドで子供を実行するには?

UPDATEconsole.log('hello');を削除すると、子が実行できるようになりましたが、それでもフォアグラウンドの標準コントロールを子に渡しません。

+0

[nodejsで複数の子プロセスをリスンして起動するにはどうすればいいですか](http://stackoverflow.com/questions/32358845/how-do-i-listen-and-spawn-multiple-child-process- in-nodejs) –

+0

いいえ。それはJavaScriptでクロージャを使用して、複数の子プロセスへのJS参照を取得することでした。これは、プロセス参照に関するもので、子供が標準入力を制御できるようにするものです。 – CoolAJ86

+0

それは価値があるので、私はあなたのコードを実行しようとしたと私のために期待どおりに働いた - ノードプロセスが終了し、pingコマンドの出力が標準出力に印刷されました。これはMac OSとnode.js v5.4.1にあります。 console.logのコメントを外すとうまくいきません。私は非常に奇妙です。 –

答えて

-1

)あなたは

// Listen for any response: 
child.stdout.on('data', function (data) { 
    console.log(data.toString()); 
}); 

// Listen for any errors: 
child.stderr.on('data', function (data) { 
    console.log(data.toString()); 
}); 

が欠落している、あなたは(child.unrefは必要ありません。

+1

これは、親プロセスが引き続き実行される原因になります。 – CoolAJ86

関連する問題