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

Getting output from detached spawned child process

我正在使用 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?)。

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