gpt4 book ai didi

go - 运行后如何检索命令的环境变量

转载 作者:行者123 更新时间:2023-12-01 22:42:45 25 4
gpt4 key购买 nike

我正在通过 exec.Command 运行一个简单的命令在围棋。现在我想知道是否可以获取此过程的所有环境变量。

因为我可以使用它来设置它们:

cmd := exec.Command("bash ./script.sh")
cmd.Dir = filepath.Join(s.Path, "..")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Env = []string{"MY_VAR=some_value"}
err := cmd.Run()

有谁知道这是否可能?如果这也适用于 Windows/MacOS/Linux

最佳答案

简短回答:号码

我讨厌说“不可能”,因为总有一些方法可以做这样的事情(例如,在 Linux 上阅读 /proc/.../environ,在 Windows 中做一些复杂的 ReadProcessMemory 戳等等)。但是,它并不打算这样做,也没有可移植的解决方案。

环境变量是进程的本地变量,在创建进程时,父进程的环境变量将被继承或您设置的任何内容。但它们并非设计为将数据发送回父进程的机制。

如果您需要将 child 的信息传达给您的 parent ,有多种方法可以做到:

  • 您可以将数据发送到 stdout并在父
  • 中捕获它
  • 您可以使用管道/套接字并将相应的句柄作为命令行参数
  • 您可以使用共享内存/内存映射文件
  • 您可以在已知位置使用实际文件(不推荐)
  • 关于go - 运行后如何检索命令的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60583816/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com