他被杀死后如何重新连接到子进程?

问题描述

我有一个处理三个电子事件的nodejs子进程,我需要在第二个进程之后完成它,所以我运行child.kill,在child.kill之后,我无法再次调用该进程..以下消息出现:错误[ERR_IPC_CHANNEL_CLOSED]:频道已关闭。

有什么办法可以杀死该进程以避免过多的内存使用,而是能够通过电子事件再次调用?

这是我的代码:

import { ipcMain } from 'electron'
import { fork } from 'child_process'

const child = fork('./child.js');

ipcMain.on('process',(event,arg) => {

     child.send({
      hello
     })

     child.on('message',(msg) => {
      event.reply('process-reply',msg);
     });
})`

ipcMain.on('process-2',arg) => {
     child.send({
      hello2
     })

     child.on('message',(msg) => {
      event.reply('process2-reply',msg);
     });
})


ipcMain.on('cancel-process',arg) => {
     child.kill();
})

解决方法

我解决了这个问题,这比我预期的要容易得多, 这是一个范围问题,当我在ipcMain之外分叉child.js时,他没有按预期工作

这是:

ipcMain.on('process',(event,arg) => {
  const child = fork('./child.js');

  child.send({
   hello
  })

  child.on('message',(msg) => {
   event.reply('process-reply',msg);
  });

 ipcMain.on('process-2',arg) => {
    child.send({
     hello2
    })

    child.on('message',(msg) => {
     event.reply('process2-reply',msg);
    });
 })

   ipcMain.on('cancel-process',arg) => {
    child.kill();
   })
})`

谢谢

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...