无法获得环境价值

时间:2019-11-29 06:55:09

标签: go cgo

当我使用setenv设置环境值时,os.Getenv无法获得它。有人可以告诉我为什么吗?

package main
/*
#include <stdlib.h>
#include <stdio.h>
*/
import "C"

import "os"
import "strings"
import "fmt"

func main()  {
    C.setenv(C.CString("CSET"), C.CString("1.1.1.1:1111"), C.int(1)) //call setenv 
    C.puts(C.getenv(C.CString("CSET")))  // call getenv

    addrs := strings.Split(os.Getenv("CSET"), ";")
    fmt.Printf("addrs = %v\n", addrs)

    os.Setenv("GOSET", "2.2.2.2:2222")
    C.puts(C.getenv(C.CString("GOSET")))
}

dingrui@dingrui-PC:~/Projects/Temp$ go run env.go 
1.1.1.1:1111
addrs = []
2.2.2.2:2222

1 个答案:

答案 0 :(得分:0)

这是<!DOCTYPE html> <html> <head> <title>Tetris</title> </head> <body> <canvas id="tetris" width="240" height="400"></canvas> <script src="tetris.js"></script> </body> </html>功能

在源文件syscall/env_unix.go中,我们看到在程序初始化阶段(Getenv)中已复制了环境变量。

如果使用C函数在后台修改程序环境变量,则不会更新此副本。

很遗憾,此功能无法解决。