2016-06-15 6 views
-2

複数のgolangプログラム間で設定値を渡すことに興味があります。複数のGolangプログラム間で設定値を渡す

私は、環境変数を試してきたが、彼らはそれらを設定するものとは別のプログラムで読み取ることができません。

私がテストしていると私は、環境変数が設定されていると、それを設定し、同じプロセスで読み取ることができることを確信しています。私が最初に介して第2のプロセスを呼び出す場合にも、それはそれを印刷します:

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. は誰が読んで、環境変数の問題を回避することができ、ファイルのどこかを作成します。

もっと良い方法がありますか?どのように進むべきですか?

+1

別のプロセスに環境変数を設定することはできません。プロセスは親からその環境を継承し、独自の変数のみを設定できます。 – JimB

+0

私のタイトルはあまりにも限られていますか?この質問には答えがあり、新しい質問を作成する必要があるようです。 – BJR

+0

それはあまりにもあなたの条件のためにヘビー級することができるhttps://github.com/coreos/etcdを見てみましょう – Plato

答えて

0

あなただけの、その後定期的に、またはいつでも変更が発生して読み込まれ、共有設定ファイルを持つ、実行時に変更される可能性がある設定を共有したい場合。ファイルが変更されたときに通知するために使用できるメカニズムがいくつかありますが、それらはOSに依存している可能性があります。

別のオプションはinter-process communicationのいくつかのフォームを使用することですが、やりたいことがいくつかの設定変数を共有している場合には、少しくらいかもしれません。

+0

だけhttps://groups.google.com/forum/#!topic/golang([情報]を追加したいです-nuts/6zhuuYpCg8Y)に設定ファイルの場所を指定します。 – BJR

関連する問題