golang如何設(shè)置子進(jìn)程的環(huán)境變量

golang如何設(shè)置子進(jìn)程的環(huán)境變量

在C/C++里面我們可以使用fork()系統(tǒng)調(diào)用,然后在fork出來的子進(jìn)程里面重新設(shè)置環(huán)境變量,最后在運行execl()系列命令加載子程序。

但是在golang里面并沒有提供類似的fork()系統(tǒng)函數(shù),如何調(diào)整子進(jìn)程的環(huán)境變量呢。

exec.Command調(diào)用子進(jìn)程的代碼例子:

    cmd := exec.Command(cccmd, ccparam)
    cmd.Stdout = fifo
    cmd.Stderr = fifo

    
    ChangeYourCmdEnvironment(cmd)

    err = cmd.Run()
    if err != nil {
        Error("chaincode execution quit, error=[%v]", err)
    }

我們看ChangeYourCmdEnvironment,如何為Cmd設(shè)置環(huán)境變量:

func ChangeYourCmdEnvironment(cmd * exec.Cmd) error {
    env := os.Environ()
    cmdEnv := []string{}

    for _, e := range env {
        i := strings.Index(e, "=")
        if i > 0 && (e[:i] == "ENV_NAME") {
            // do yourself
        } else {
            cmdEnv = append(cmdEnv, e)
        }
    }
    cmd.Env = cmdEnv

    return nil
}

我們看到Cmd對象里面對Env的解釋

type Cmd struct {
  ...
    // Env specifies the environment of the process.
    // If Env is nil, Run uses the current process's environment.
    Env []string
  ...

就是一個環(huán)境變量數(shù)組,我們自然可以增加,刪除,修改這個數(shù)組的內(nèi)容,然后重新賦值給Cmd對象。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Linux 進(jìn)程管理與程序開發(fā) 進(jìn)程是Linux事務(wù)管理的基本單元,所有的進(jìn)程均擁有自己獨立的處理環(huán)境和系統(tǒng)資源,...
    JamesPeng閱讀 2,600評論 1 14
  • 本次系列的內(nèi)容如下: Android啟動流程——1 序言、bootloader引導(dǎo)與Linux啟動Android系...
    隔壁老李頭閱讀 7,010評論 4 23
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,649評論 19 139
  • 好事1:閱讀新書《人生不設(shè)限》,并有所感悟,探究自己的五年計劃。突破幸福課的瓶頸期! 好事2:老公帶多多去感受藝術(shù)...
    冰藍(lán)兒8閱讀 229評論 0 1
  • 01 百度百科如是解釋“人格魅力”: 何謂人格魅力?首先要弄清什么是人格。人格是指人的性格、氣質(zhì)、能力等特征的總和...
    西瓜甜甜啦閱讀 1,433評論 26 69

友情鏈接更多精彩內(nèi)容