javascript - Node 子进程, channel 在 process.send 上关闭

标签 javascript node.js child-process

在我的工作文件中,我监听数据回调。 someLib 是 Node 串口。

process.on('message', function(msg) {
    someLib.on('data', function(data){
        console.log('some data');
        process.send(data);
    });
});

这打印

some data
Error: channel closed

但是

process.on('message', function(msg) {
    process.send('foobar');
});

工作正常。这很奇怪,但有时第一个代码示例有效,所以 channel 关闭错误随机出现。

来自 http://nodejs.org/api/child_process.html#child_process_event_error我得到错误被触发的信息

Sending a message to the child process failed for whatever reason.

什么是“无论什么原因”?有什么想法吗?

最佳答案

问题是当父进程被杀死时, fork 的子进程没有正确关闭。这导致多个幽灵进程导致 channel 关闭错误。

我连接到 SIGHUP 并优雅地杀死了它们。现在一切正常。

关于javascript - Node 子进程, channel 在 process.send 上关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24110460/

相关文章:

javascript - 未捕获的语法错误 : Unexpected token < when using bootstrap js

node.js - 使用 Node.js 记住遍历的 fs 路径

node.js - 如何从NodeJS中的函数返回Post请求的响应?

javascript - Node.js 分离的子进程被调用为交互式前台进程

javascript - 仅匹配特定文本 - jQuery 字符串

JavaScript 计时器不适用于多个实例

javascript - 如何让浏览器停留在当前窗口

javascript - React/Node - 在另一个文件中包含 js 组件

node.js - 在 Node.js child_process.fork() 完成之前,Redis 数据不会显示

node.js - Node 子进程出现 python ENOENT 错误