美文网首页Go语言用例Go知识库
golang如何设置子进程的环境变量

golang如何设置子进程的环境变量

作者: CodingCode | 来源:发表于2018-05-02 14:03 被阅读31次

golang如何设置子进程的环境变量

在C/C++里面我们可以使用fork()系统调用,然后在fork出来的子进程里面重新设置环境变量,最后在运行execl()系列命令加载子程序。

但是在golang里面并没有提供类似的fork()系统函数,如何调整子进程的环境变量呢。

exec.Command调用子进程的代码例子:

    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设置环境变量:

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
  ...

就是一个环境变量数组,我们自然可以增加,删除,修改这个数组的内容,然后重新赋值给Cmd对象。

相关文章

  • golang如何设置子进程的环境变量

    golang如何设置子进程的环境变量 在C/C++里面我们可以使用fork()系统调用,然后在fork出来的子进程...

  • shell中环境变量

    环境变量 查看环境变量命令 设置全局环境变量 在设置全局环境变量的进程所创建的子进程中,该变量都是可见的。创建全局...

  • vfork导致父进程环境变量被修改

    vfork版本 运行结果 可以看出,父进程没有设置环境变量MY_ENV,但是由于子进程12451 设置了环境变量,...

  • 2019-01-30

    # golang环境变量 ## 1、查看环境变量 ## 2、设置环境变量 ### 2.1 linux环境 ### ...

  • Golang如何让子进程以另一个用户身份运行

    Golang如何让子进程以另一个用户身份运行 当父进程launch一个子进程的时候,如何使得子进程使用另一个用户身...

  • Golang交叉编译各个平台的二进制文件

    熟悉golang的人都知道,golang交叉编译很简单的,只要设置几个环境变量就可以了 GOOS和GOARCH的值...

  • 006.环境变量

    环境变量 ​ shell的环境变量作用于自身和它的子进程,每个进程都有其各自的环境变量,当一个进程被创建时,除了创...

  • Windows安装beego框架环境

    1.安装golang,安装完后设置golang系统环境变量。我的目录是D:\soft\Go\bin 2.在任意目录...

  • Golang&Goland配置

    Golang配置 环境配置 设置环境变量 GOPROXY ,以使用 go get 的: Goland配置 gofm...

  • go 语言学习(1)--安装与配置

    安装 golang官方网站golang中文学习网 设置环境变量 这里 gopath 说一下, 每个 go 的目录都...

网友评论

    本文标题:golang如何设置子进程的环境变量

    本文链接:https://www.haomeiwen.com/subject/cyqcrftx.html