从分离的生成的子进程中获取输出

问题描述 投票:0回答:1

例如,我正在使用node.js启动一些需要一些时间的shell操作:

find / -name myfile

所以我有

require('child_process').spawn('find', ['/', '-name', filename]);

由于主进程死亡,我希望子进程继续运行(假设它也将结果写入文件中,所以我使用以下选项:

require('child_process').spawn('find', ['/', '-name', filename], {detached: true, stdio: 'ignore'});

但是,这意味着我无法在进程运行时接收任何数据,至少不能通过stdout / stderr。我的问题是解决方案是否需要子进程写入某些资源,以及是否需要主进程轮询该资源以进行更新,或者是否存在某种解决方法来以某种方式建立数据管道,而不会在子进程之间建立依赖关系过程和主要过程(也许使用mkfifo?)。

node.js stdout child-process
1个回答
0
投票

我使用Redis Pub / Sub找到了一个不错的解决方案:两个进程都连接到同名的Redis通道,主进程在启动/重新启动时订阅了该通道,并且生成的进程使用以下命令将进度消息发布到该通道:关联的进程ID。它确实需要运行Redis服务器,但是在这种情况下,我已经在使用Redis。我喜欢此解决方案的原因是它不需要手动轮询驱动器或内存中的任何数据,并且可以缩放到多个生成的进程,将消息写入同一Redis通道。

© www.soinside.com 2019 - 2024. All rights reserved.