在多个Golang程序之间传递配置值

时间:2016-06-15 19:26:05

标签: linux go

我有兴趣在多个golang程序之间传递配置值。

我已经尝试过环境变量但是它们不能被设置它们的程序读取。

我已经测试过并且我确定环境变量正在设置中,并且可以在设置它的相同过程中读取。此外,如果我通过第一个进程调用第二个进程,它将打印出来:

package main

import (
    "bufio"
    "fmt"
    "os"
)    

func main() {
    os.Setenv("AVARIABLE", "12345")

    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter text: ")
    _, _ = reader.ReadString('\n')
    fmt.Println("exiting")
}              

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println(os.Getenv("AVARIABLE"))
}

环境变量上下文对我来说太窄了。

我正在考虑这些选择:

  1. /etc/profile.d/<filename>.sh创建一个文件并运行source /etc/profile.d/<filename>.sh,以便更全面地设置变量。

  2. 在任何人都可以阅读的地方创建一个文件,避免环境变量问题。

  3. 有更好的方法吗?我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果您只想共享可能在运行时更改的配置,那么请定期或在发生更改时读取共享配置文件。您可以使用一些机制在文件更改时通知您,但这些机制可能取决于操作系统。

另一种选择是使用某种形式的inter-process communication,但如果您只想共享一些配置变量,这可能会有点多。