请问在 node.js 中父进程如何与子进程进行通信,非fork形式

我现在有一个node-webkit项目,需要通过node的child_process来启动第二个NW实例,所用的方法是child_process.spawn()

我在网上查了很多资料,大部分是说的使用fork()方法的情况下,子进程可以通过send()来像父进程发送消息,但是spawn()方式下不会建立ipc通道,也就没有send方法。通过在option中添加stdio:['ipc']也不行,一瞬间cpu到99%,然后子进程报错没有process.send()方法。

请问该如何实现两个进程间的通信呢?

创建子进程的代码如下:

let proc = cp.spawn('../nw',['../static' ,'--user-data-dir','../userdata', ],{
        detached: true,
        // stdio:['ipc'] :无效
    })
    
阅读 2.8k
1 个回答

查了下文档,stdio 的参数形式是有些“坑”的

  1. 如果是字符串形式,只接受这三个值,pipe,ignore,inherit
  2. 如果是数组形式,就得根据需要,分别指定 stdin, stdout, stderr

ipc 不属于情况1,而且你用的是数组形式,stdout 不指定的话或者指定为 null/undefined,则使用的是默认值 pipe

所以问题是否在于 stdio 只定义对了输入,没定义对输出呢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题