节点子进程,在process.send上关闭通道

Upv*_*ote 5 javascript child-process node.js

在我的worker文件中,我监听数据回调.someLib是node-serialport.

process.on('message', function(msg) {
    someLib.on('data', function(data){
        console.log('some data');
        process.send(data);
    });
});
Run Code Online (Sandbox Code Playgroud)

这打印

some data
Error: channel closed
Run Code Online (Sandbox Code Playgroud)

process.on('message', function(msg) {
    process.send('foobar');
});
Run Code Online (Sandbox Code Playgroud)

工作良好.这很奇怪,但有时第一个代码示例有效,因此通道关闭错误随机出现.

http://nodejs.org/api/child_process.html#child_process_event_error我得到的信息是当触发错误时

Sending a message to the child process failed for whatever reason.
Run Code Online (Sandbox Code Playgroud)

什么是"无论什么原因"?有任何想法吗?

Upv*_*ote 6

问题是当父母被杀时,分叉的子进程没有正确关闭.这导致多个重影过程导致通道关闭错误.

我迷上了SIGHUP并优雅地杀死了它们.现在一切正常.