Browse Source

add child_process spawn demo

master
Poised_flw 4 years ago
parent
commit
66df2fec88
  1. 1
      .gitignore
  2. 20
      app/main/child_process.js
  3. 21
      app/main/ipc.js

1
.gitignore

@ -0,0 +1 @@
*.swp

20
app/main/child_process.js

@ -0,0 +1,20 @@
const { spawn } = require('child_process')
let pidMap = {}
function start(command, args) {
const childProgress = spawn(command, args)
pidMap[childProgress.pid] = childProgress
return childProgress.pid
}
function kill(pid) {
const childProgress = pidMap[pid]
if (!childProgress || childProgress.killed) return;
// TODO 需要测试是否能真正杀掉
return childProgress.kill()
}
module.exports = {
start,
kill,
}

21
app/main/ipc.js

@ -5,6 +5,7 @@ const store = require('./windows/lib/store');
const {create: createMainWindow} = require('./windows/main')
// const { create: createLoginWindow } = require('./windows/login')
// const { create: createAppWindow } = require('./windows/app')
const childProcess = require('./child_process')
const {MAIN_WINDOW_FLAG, SUSPENSION_WINDOW_FLAG} = require('./constant');
// const installApp = require('./ipc/installApp');
@ -209,4 +210,24 @@ module.exports = () => {
// ipcMain.handle('getApps', getApps);
//
// ipcMain.handle('removeApp', removeApp);
/*
ipcRenderer.send('spawn', {
command: '微信.exe',
args: null || ['--disable-cache'],
key: + new Date // 唯一key,用来做关闭识别
})
*/
ipcMain.on('spawn', (event, arg) => {
const pid = childProcess.start(arg.command, arg.args)
event.sender.send('spawn-success', {
key: arg.key,
pid
})
})
// ipcRenderer.send('kill-process', [pid])
ipcMain.on('kill-process', function (event, arg) {
childProcess.kill(arg[0])
})
}
Loading…
Cancel
Save