【问题标题】:Electron - How to get process argv from all electron pidsElectron - 如何从所有电子 pid 中获取进程 argv
【发布时间】:2021-06-19 23:59:20
【问题描述】:

我有一个带有多个 browserWindows 的电子应用程序。
为了我自己的帮助,我使用其他参数生成它们(例如:'--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 数组捆绑在一起?

【问题讨论】:

    标签: node.js electron ipc


    【解决方案1】:

    我以另一种方式解决了我的问题。我的目标是显示“过程”类型(不是度量数据中已经存在的铬类型)。

    我正在收集我已经知道的 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)
        })
    })
    

    如果有更简单、更智能的方法,我很高兴听到。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 2021-05-14
      • 2021-08-08
      • 2017-10-11
      相关资源
      最近更新 更多