🎨 桌面端内核进程使用随机端口 https://github.com/siyuan-note/siyuan/issues/4952

This commit is contained in:
Liang Ding 2022-10-25 11:15:09 +08:00
parent ffc35d8573
commit 2832c40687
No known key found for this signature in database
GPG key ID: 136F30F901A2231D

View file

@ -551,6 +551,8 @@ const initKernel = (initData) => {
} }
let cmd = `ui version [${appVer}], booting kernel [${kernelPath} ${cmds.join(' ')}]` let cmd = `ui version [${appVer}], booting kernel [${kernelPath} ${cmds.join(' ')}]`
writeLog(cmd) writeLog(cmd)
let kernelProcessPid = ""
if (!isDevEnv) {
const cp = require('child_process') const cp = require('child_process')
const kernelProcess = cp.spawn(kernelPath, const kernelProcess = cp.spawn(kernelPath,
cmds, { cmds, {
@ -558,7 +560,8 @@ const initKernel = (initData) => {
stdio: 'ignore', stdio: 'ignore',
}, },
) )
writeLog('booted kernel process [pid=' + kernelProcess.pid + ']') kernelProcessPid = kernelProcess.pid
writeLog('booted kernel process [pid=' + kernelProcessPid + ']')
kernelProcess.on('close', (code) => { kernelProcess.on('close', (code) => {
if (0 !== code) { if (0 !== code) {
@ -600,6 +603,7 @@ const initKernel = (initData) => {
resolve(false) resolve(false)
} }
}) })
}
const sleep = (ms) => { const sleep = (ms) => {
return new Promise(resolve => setTimeout(resolve, ms)) return new Promise(resolve => setTimeout(resolve, ms))
@ -616,7 +620,7 @@ const initKernel = (initData) => {
while (!gotPort) { while (!gotPort) {
try { try {
const portJSON = JSON.parse(fs.readFileSync(portJSONPath, 'utf8')) const portJSON = JSON.parse(fs.readFileSync(portJSONPath, 'utf8'))
const ret = portJSON[kernelProcess.pid.toString()] const ret = portJSON[kernelProcessPid]
if (ret) { if (ret) {
gotPort = true gotPort = true
return ret return ret
@ -627,7 +631,7 @@ const initKernel = (initData) => {
} finally { } finally {
count++ count++
if (64 < count) { if (64 < count) {
writeLog('get kernel port failed [pid=' + kernelProcess.pid + ']') writeLog('get kernel port failed [pid=' + kernelProcessPid + ']')
bootWindow.destroy() bootWindow.destroy()
resolve(false) resolve(false)
} }
@ -812,6 +816,7 @@ app.on('before-quit', (event) => {
}) })
const {powerMonitor} = require('electron') const {powerMonitor} = require('electron')
const cp = require("child_process");
powerMonitor.on('suspend', () => { powerMonitor.on('suspend', () => {
writeLog('system suspend') writeLog('system suspend')