1

child_processこのように(Windowsで)切り離されたものを呼び出しています

var stdout = fs.openSync('./out.log', 'a');
var stderr = fs.openSync('./out.log', 'a');

var child = child_process.spawn('node', ['./main.js'], {
    detached: true,
    stdio: [ 'ignore', stdout, stderr ],
    env: process.env
});

child.unref();

生成されたプロセス、つまりmain.jsを使用して一部のワーカーを fork しchild_process.forkます。

通常、子プロセスと子プロセスはバックグラウンドで実行する必要があります。間違っている場合は修正してください。しかし、試してみると、子プロセスはフォアグラウンドでインタラクティブに実行されています。何が彼らをこのように振る舞わせているのか、私にはわかりません。誰が問題の可能性を指摘できますか?

に設定detachedするfalseと正常に動作しますが、元の親はすべての子を終了しないと終了できません。

4

1 に答える 1

2

これは、Windows 上のノードに問題がある可能性があると思います。

Ubuntu 仮想マシンのhttp://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_optionsで自分自身を確実に参照しているノード ドキュメントのコードとサンプル コードの両方を試してみましたが、問題なく動作します。プロセスは分離され、実行を続けます。バックグラウンドで正常に実行されているため、out.log 以外に出力はありません。

私は単純なpingコマンドを実行し、あなたがやろうとしているようにjavascriptファイルでノードインスタンスを実行しましたが、どちらもうまくいきました。

Windows で ping コマンドを使用して同じことを行うことをお勧めします。. .

var child = child_process.spawn('ping', ['-n','25','localhost'],. . . 

期待どおりに動作する場合は、main.js 内に問題を引き起こしている何かがある可能性があります。どちらも機能しない場合は、Windows のノードのバグに直面しているので、報告する必要があります。

それがいくつか役立つことを願っています!

于 2013-07-22T12:45:53.907 に答える