亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

運行后如何檢索命令的環境變量

運行后如何檢索命令的環境變量

Go
尚方寶劍之說 2023-08-14 17:23:04
我正在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父級并在父級中捕獲它

  • 您可以使用管道/套接字并將相應的句柄作為命令行參數傳遞

  • 您可以使用共享內存/內存映射文件

  • 您可以使用已知位置的實際文件(不推薦)


查看完整回答
反對 回復 2023-08-14
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號