我有一个要求,我必须运行独立于主节点线程的进程。基本上,目的是从主节点线程数据启动辅助进程,而不是等待回调或任何结果,因为辅助进程不必将任何内容返回给主线程。
我希望在不阻塞主nodejs线程的情况下实现这一点,并且主线程不应该关心它将数据传递给辅助线程后会发生什么。基本上,就二级进程而言,主线程的进程在将数据发送到辅助线程后结束。
我有什么建议可以实现这个目标吗?我读到了关于子进程,webworkers,dnode和process nexttick的内容,但我不确定实现它的最佳方法是什么。我尝试了nexttick,但我的经验是它仍然是主线程的一部分,虽然是异步的。
答案 0 :(得分:2)
如果您的目标只是在不考虑输出的情况下启动流程,则应将spawn与detached:true
一起使用。
对于传递数据,您可以使用stdin(请参阅示例)或传递命令行参数或写入文件和重定向进行编写。
答案 1 :(得分:0)
我已经实现了子进程fork,用于将辅助/后台处理的数据传递给子进程(不需要断开子进程)。这似乎是我现在的工作。如果我遇到任何问题或找到更好的解决方案,我会更新。
//Main Process
var cp = require('child_process').fork('child.js');
cp.send(data);
//Child Process (child.js)
process.on('message', function(data){
//do something with data
});