1

Linux では、c++ プログラム バイナリを起動する bash スクリプトがあります。私がする必要があるのは、そのスクリプトで環境変数を設定し、起動した C++ プログラム内で を使用してその変数にアクセスすることですgetenv

ここにスクリプトのコードがあります

#!/bin/bash
export SAMPLE_VAR=1
./c++_binary

C++ プログラム:

char * env_var = getenv("SAMPLE_VAR");
if (env_var != NULL) printf("var set\n");

ただし、これは機能しないようです。私が理解していることから、スクリプトを実行すると、新しいサブシェルで実行され、そこに環境変数 SAMPLE_BAR が設定されますが、C++ バイナリも同じサブシェルで起動されます (ここで間違っている可能性があります)。 SAMPLE_VAR にアクセスできます。env変数を設定するだけの別のスクリプトを書いてみましたが、メインスクリプトでそのスクリプトを呼び出してsource env_var_set.sh も無駄でした。

この方法で、新しく設定された環境変数をプログラムに渡すことは可能ですか? ありがとう

4

2 に答える 2

1

コメントを回答としてマークする機能のリクエストは引き続き拒否されるため、上記のソリューションをここにコピーします。

ああ、タイプミスで申し訳ありません。私の間違いです。スクリプト内で「sudo」を使用してバイナリを起動していましたが、ルートの環境で実行され、そこに変数が設定されていませんでした。sudo を削除すると、正常に機能しました。混乱させて申し訳ありません。乾杯。– アブドラ

于 2013-10-30T13:50:13.617 に答える