3 回答
![?](http://img1.sycdn.imooc.com/545862120001766302200220-100-100.jpg)
TA贡献1802条经验 获得超6个赞
您可以使用 child_process 模块生成终端并执行以下命令 wrt 平台并获取变量,解析和使用或编写本机节点模块以访问每个平台的适当 API 并获取输出。
Windows(使用 powershell,2019 是 PID)
(Get-Process -id 2019).StartInfo.EnvironmentVariables
Linux
tr '\0' '\n' < /proc/2019/environ
苹果电脑
ps eww -o command 2019 | tr ' ' '\n'
![?](http://img1.sycdn.imooc.com/5458632800010f8802200220-100-100.jpg)
TA贡献1824条经验 获得超8个赞
结合@SudhakarRS 的回答:
var child = require('child_process').execFile('powershell', [
'(Get-Process SomeProcess).StartInfo.EnvironmentVariables'
], function(err, stdout, stderr) {
console.log(stdout);
});
如果你想调试它,确保你偷看err和stderr。
更换SomeProcess用notepad我的作品,但使用notepad.exe没有。
在 powershell 上,您可以使用Get-Process [process name].
因此,例如,如果我有 4 个记事本实例正在运行并且 do Get-Process notepad,我会看到:
您可以获得(Get-Process notepad).Id
返回的进程 ID :
您可以使用相同的代码来选择 ID:
var child = require('child_process').execFile(
'powershell',
['(Get-Process notepad).Id'],
function(err, stdout, stderr) {
var ids = stdout.split("\r\n");
ids.pop(); //remove the blank string at the end
console.log(ids);
}
);
^ 返回:
如果您只想获取带有名称的第一个进程,则为:
(Get-Process notepad)[0].StartInfo.EnvironmentVariables
^ 显然替换notepad
为您的进程名称。
![?](http://img1.sycdn.imooc.com/54584d6100015f5802200220-100-100.jpg)
TA贡献1803条经验 获得超3个赞
简单的方式(从这里开始,您可以使用shelljs 之类的东西,然后运行:
ps faux | grep 'PROCESS_NAME'
然后提取进程ID(我只是在处理正则表达式)然后执行:
cat /proc/THE_PROCESS/environ | tr '\0' '\n'
您将获得 env vars 作为字符串,如下所示:
THEVAR=1 ANOTHERVAR=2
我想你只是用 '\n' 分割字符串,但我正在检查!
一旦我弄清楚正则表达式,我就会更新它。**你使用的是 linux/mac 还是 windows?
更新:检查https://github.com/shelljs/shx跨平台
添加回答
举报