我正在exec.CommandGo 中運行一個簡單的命令?,F在我想知道是否可以獲取該進程的所有環境變量。因為我可以用這個來設置它們: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 關注
- 146 瀏覽
添加回答
舉報
0/150
提交
取消