猿问

Nodejs - 获取正在运行的进程的环境变量

我正在为 vscode 编写扩展,我需要获取已经运行的进程的环境变量。但我找不到办法做到这一点。


我知道如何使用 psutil 在 python 中做到这一点:


for proc in psutil.process_iter(attrs=['name', 'exe']):

    if proc.info['name'].lower() == 'SomeProcess.exe'.lower():

        return proc.environ()

javascript/nodejs 有类似的东西吗?


肥皂起泡泡
浏览 155回答 3
3回答

呼啦一阵风

您可以使用 child_process 模块生成终端并执行以下命令 wrt 平台并获取变量,解析和使用或编写本机节点模块以访问每个平台的适当 API 并获取输出。Windows(使用 powershell,2019 是 PID)(Get-Process&nbsp;-id&nbsp;2019).StartInfo.EnvironmentVariablesLinuxtr&nbsp;'\0'&nbsp;'\n'&nbsp;<&nbsp;/proc/2019/environ苹果电脑ps&nbsp;eww&nbsp;-o&nbsp;command&nbsp;2019&nbsp;&nbsp;|&nbsp;tr&nbsp;'&nbsp;'&nbsp;'\n'

有只小跳蛙

结合@SudhakarRS 的回答:var child = require('child_process').execFile('powershell', [&nbsp;&nbsp; &nbsp; '(Get-Process SomeProcess).StartInfo.EnvironmentVariables'&nbsp;], function(err, stdout, stderr) {&nbsp;&nbsp; &nbsp; console.log(stdout);});&nbsp;如果你想调试它,确保你偷看err和stderr。更换SomeProcess用notepad我的作品,但使用notepad.exe没有。在 powershell 上,您可以使用Get-Process [process name].因此,例如,如果我有 4 个记事本实例正在运行并且 do Get-Process notepad,我会看到:您可以获得(Get-Process notepad).Id返回的进程 ID&nbsp;:您可以使用相同的代码来选择 ID:var child = require('child_process').execFile(&nbsp; &nbsp; 'powershell',&nbsp; &nbsp; ['(Get-Process notepad).Id'],&nbsp; &nbsp; function(err, stdout, stderr) {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; var ids = stdout.split("\r\n");&nbsp; &nbsp; &nbsp; &nbsp; ids.pop(); //remove the blank string at the end&nbsp; &nbsp; &nbsp; &nbsp; console.log(ids);&nbsp; &nbsp; });^ 返回:如果您只想获取带有名称的第一个进程,则为:(Get-Process notepad)[0].StartInfo.EnvironmentVariables^ 显然替换notepad为您的进程名称。

繁星点点滴滴

简单的方式(从这里开始,您可以使用shelljs 之类的东西,然后运行:ps&nbsp;faux&nbsp;|&nbsp;grep&nbsp;'PROCESS_NAME'然后提取进程ID(我只是在处理正则表达式)然后执行:cat&nbsp;/proc/THE_PROCESS/environ&nbsp;|&nbsp;tr&nbsp;'\0'&nbsp;'\n'您将获得 env vars 作为字符串,如下所示:THEVAR=1 ANOTHERVAR=2我想你只是用 '\n' 分割字符串,但我正在检查!一旦我弄清楚正则表达式,我就会更新它。**你使用的是 linux/mac 还是 windows?更新:检查https://github.com/shelljs/shx跨平台
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答