为什么分叉的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'); });