我只是试图分叉一个简单的子进程并让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');
});
我立刻将“已退出”打印到控制台,从不得到“嗨”。然后,如果我继续尝试发送到子进程,我会收到一个通道关闭错误。
我做错了什么?
答案 0 :(得分:2)
您需要保持两个进程都处于打开状态,因为孩子将立即关闭,父母也将关闭。你可以这样做:
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');
});