为什么分叉的subprocess在我分叉后立即退出?

我只是试图分叉一个简单的subprocess,并让IPC通道保持打开状态,但由于某种原因它会立即退出。

在parent.js中:

var child = require('child_process').fork('./child.js'); child.on('hi', function() { console.log("Hi"); }); child.on('exit', function() { console.log("Exited"); }); child.send('hello'); 

在child.js中:

 process.on('hello', function() { process.send('hi'); }); 

我立即将“退出”打印到控制台上,并且从来没有得到“嗨”。 然后,如果我继续尝试发送到subprocess,我得到一个通道closures错误。

我做错了什么?

您需要保持这两个进程打开,因为孩子会立即closures,父母也会closures。 你可以这样做:

parent.js

 var child = require('child_process').fork('./child.js'); child.on('message', function () { console.log("Hi"); }); child.on('exit', function () { console.log("Exited"); }); setTimeout(() => { child.send('hello'); }, 1000); process.stdin.resume(); 

child.js

 process.on('message', function () { console.log("sending hi"); process.send('hi'); });