节点subprocess,通道closuresprocess.send

在我的工作人员文件里面,我正在监听一个数据callback。 someLib是node-serialport。

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

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

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

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

什么是“什么原因”? 有任何想法吗?

问题是分娩的孩subprocess在父母死亡时没有被正确closures。 这导致了多个导致通道closures错误的幽灵进程。

我迷上了SIGHUP,优雅地杀了他们。 现在一切正常。

你需要指定事件types,因为使用process.send(data)你只是发送一个对象。