我现在有一个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'] :无效
})
查了下文档,stdio 的参数形式是有些“坑”的
ipc 不属于情况1,而且你用的是数组形式,stdout 不指定的话或者指定为 null/undefined,则使用的是默认值 pipe
所以问题是否在于 stdio 只定义对了输入,没定义对输出呢