在电子中产生一个过程

时间:2017-11-20 01:24:17

标签: electron child-process spawn

我看过一些关于这个话题的帖子,是的,当我在控制台中使用电子命令时它运行得很好。但是当我打包(电子建设者)电子应用程序时,它无法工作,并且出现问题当我启动应用程序时:它开始不断创建新进程,因此我们可以看到任务管理器中有很多进程,CPU使用率达到100%。 我不知道这是怎么发生的,你能帮帮我吗?请! 这是我的测试代码:

master.js(主):

var childProcess = require('child_process');
let createProc = () => {
  let sp = childProcess.spawn(process.execPath, ['./go.js'], {stdio:'ignore'});
  sp.unref();
  sp.on('error', (err) => {
    console.log('failed to start process',err);
  });
  sp.on('exit',(code, signal) => {
    console.log(`child process exited with code ${code}`);
    createProc();
  });
}

createProc();

go.js:

const {app, BrowserWindow} = require('electron');
let basicWindowParams = {
  show: true,
  autoHideMenuBar:true
};
console.log(process.execPath)
console.log(process.execArgv)
console.log(process.pid)
app.on('ready', () => {
  let win = new BrowserWindow(basicWindowParams);
  win.loadURL('http://www.reddit.com/');
  win.on('did-finish-load', () => {
    win.show();
  });
});

操作系统:Windows 10

电子:1.8.1

更新:我创建了一个演示回购:https://github.com/xzycn/el_test

1 个答案:

答案 0 :(得分:-1)

在主电子文件中,您可以使用以下内容:

let serverProc = require('child_process').fork(
  require.resolve('./server.js'),
  ['--key', 'value'], // pass to process.argv into child
  {
    // options
  }
)
serverProc.on('exit', (code, sig) => {
  // finishing
})
serverProc.on('error', (error) => {
  // error handling
})
相关问题