use*_*867 1 fork fork-join node.js
我有以下代码
// Parent.js
var cp = require('child_process');
var child = cp.fork('./pChild.js');
child.on('message', function(m) {
// Receive results from child process
console.log('received: ' + m);
});
// Send child process some work
child.send('First Fun');
Run Code Online (Sandbox Code Playgroud)
// pChild.js
process.on('message', function(m) {
console.log("Helloooooooooo from pChild.js")
// Pass results back to parent process
process.send("Fun1 complete");
});
Run Code Online (Sandbox Code Playgroud)
如何处理从 pChild.js 抛出的 parent 中的错误并终止进程?
子进程中未处理的错误将导致它退出,这将在对象上发出'exit'事件child。
child.on('exit', function (code, signal) {
console.log('Child exited:', code, signal);
});
Run Code Online (Sandbox Code Playgroud)
如果错误是在子进程中处理的,它可以作为另一条消息发送:
// in pChild.js
/* ... */.on('error', function (error) {
process.send({ error: error.message || error });
});
Run Code Online (Sandbox Code Playgroud)
在孩子身上
process.on('uncaughtException', (err) => {
process.send({isError: true});
});
Run Code Online (Sandbox Code Playgroud)
在主
master.on('message',({isError, data})=>{
if(isError) {
master.kill('SIGINT');
return;
}
console.log('message from child', data);
master.kill('SIGINT');
});
Run Code Online (Sandbox Code Playgroud)