Node.js 为什么我的分叉子进程在分叉后立即退出?
我只是尝试派生一个简单的子进程,让IPC通道保持打开状态,但由于某些原因,它会立即退出 在parent.js中:Node.js 为什么我的分叉子进程在分叉后立即退出?,node.js,electron,Node.js,Electron,我只是尝试派生一个简单的子进程,让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'
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');
});
我立即将“退出”打印到控制台,但从未收到“嗨”。然后,如果我继续尝试发送到子进程,我会得到一个通道关闭错误
我做错了什么?您需要保持两个进程都处于打开状态,因为子进程会立即关闭,父进程也会立即关闭。您可以这样做: 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');
});
我认为这是因为你的孩子的过程正在结束。子进程中的某些内容需要保持进程运行。我尝试向其添加垃圾
setInterval()
,以使其保持活动状态,但仍然没有dicetryprocess.stdin.resume()代码>在child.js中?我只是试了一下,还是什么都没做:(你把setInterval()
放在处理程序中了吗?如果我把它放在child.js
处理程序之外,我可以让进程保持活动状态,但是消息发送仍然不起作用。另外,我不确定任意事件名称是否起作用。看起来它一定是“message”哦,我让它起作用了:)原来是活动名称-我想它可以是任何东西,但就像你说的,它必须是“消息”