为什么我的fork子进程在我分叉后立即退出?

时间:2017-04-20 02:51:38

标签: 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');

在child.js中:

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

我立刻将“已退出”打印到控制台,从不得到“嗨”。然后,如果我继续尝试发送到子进程,我会收到一个通道关闭错误。

我做错了什么?

1 个答案:

答案 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');
});