我正在exec.CommandGo 中运行一个简单的命令。现在我想知道是否可以获取该进程的所有环境变量。因为我可以用这个来设置它们:cmd := exec.Command("bash ./script.sh")cmd.Dir = filepath.Join(s.Path, "..")cmd.Stdout = os.Stdoutcmd.Stderr = os.Stderrcmd.Env = []string{"MY_VAR=some_value"}err := cmd.Run()有谁知道这是否可能?如果这也适用于 Windows/MacOS/Linux
1 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
简短回答:不。
我讨厌说“这是不可能的”,因为总有一些方法可以做这样的事情(例如,/proc/.../environ
在 Linux 上阅读,ReadProcessMemory
在 Windows 中进行一些复杂的戳戳等)。但是,它并不打算这样做,也没有可移植的解决方案。
环境变量是进程的本地变量,在创建进程时,将继承父进程的环境变量或您设置的任何变量。但它们并不是被设计为将数据发送回父进程的机制。
如果您需要将孩子的信息传达给父母,可以通过多种方式实现:
您可以将数据发送到
stdout
父级并在父级中捕获它您可以使用管道/套接字并将相应的句柄作为命令行参数传递
您可以使用共享内存/内存映射文件
您可以使用已知位置的实际文件(不推荐)
- 1 回答
- 0 关注
- 103 浏览
添加回答
举报
0/150
提交
取消