Electron - 如何从所有电子 pids 获取进程 argv
Electron - How to get process argv from all electron pids
我有一个带有多个浏览器窗口的电子应用程序。
为了我自己的帮助,我用额外的参数生成它们(例如:'--renderer-mode="second-window"')。
现在我想收集我当前电子过程的度量数据。
我从我的一个渲染器调用的主进程中已经有一个 IPC 接口。
ipcMain.handle('app-metrics', (event, message) => {
return new Promise((resolve) => {
const appMetrics = app.getAppMetrics()
resolve(appMetrics)
})
})
这里我想添加我的应用程序进程中的所有 argv。
我不知道如何获取此功能中的信息。我只知道 process.argv
的方式,但我如何从所有子进程收集这些信息并将其与我的 appMetrics
数组捆绑在一起?
我用另一种方式解决了我的问题。我的目标是显示“进程”类型(而不是度量数据中已经存在的铬类型)。
我正在收集我已知的 PID,并将它们硬编码为特定类型。接下来是将此信息添加到度量对象中。这是我的结果:
ipcMain.handle('app-metrics', (event, message) => {
return new Promise((resolve) => {
const pids = [
{
name: 'main-process',
pid: process.pid
},
{
name: 'app-gui',
pid: this.win.webContents.getOSProcessId()
},
{
name: 'popup-gui',
pid: this.winPopup.webContents.getOSProcessId()
}
]
const appMetrics = app.getAppMetrics().map((metric) => {
const pidType = pids.filter((e) => e.pid === metric.pid)
if (pidType.length > 0) {
return {
...metric,
appType: pidType[0].name
}
}
return {
...metric,
appType: ''
}
})
resolve(appMetrics)
})
})
如果有更简单、更智能的方法,我很高兴听到。 :)
我有一个带有多个浏览器窗口的电子应用程序。
为了我自己的帮助,我用额外的参数生成它们(例如:'--renderer-mode="second-window"')。
现在我想收集我当前电子过程的度量数据。
我从我的一个渲染器调用的主进程中已经有一个 IPC 接口。
ipcMain.handle('app-metrics', (event, message) => {
return new Promise((resolve) => {
const appMetrics = app.getAppMetrics()
resolve(appMetrics)
})
})
这里我想添加我的应用程序进程中的所有 argv。
我不知道如何获取此功能中的信息。我只知道 process.argv
的方式,但我如何从所有子进程收集这些信息并将其与我的 appMetrics
数组捆绑在一起?
我用另一种方式解决了我的问题。我的目标是显示“进程”类型(而不是度量数据中已经存在的铬类型)。
我正在收集我已知的 PID,并将它们硬编码为特定类型。接下来是将此信息添加到度量对象中。这是我的结果:
ipcMain.handle('app-metrics', (event, message) => {
return new Promise((resolve) => {
const pids = [
{
name: 'main-process',
pid: process.pid
},
{
name: 'app-gui',
pid: this.win.webContents.getOSProcessId()
},
{
name: 'popup-gui',
pid: this.winPopup.webContents.getOSProcessId()
}
]
const appMetrics = app.getAppMetrics().map((metric) => {
const pidType = pids.filter((e) => e.pid === metric.pid)
if (pidType.length > 0) {
return {
...metric,
appType: pidType[0].name
}
}
return {
...metric,
appType: ''
}
})
resolve(appMetrics)
})
})
如果有更简单、更智能的方法,我很高兴听到。 :)