__getenv() - 環境変数の取得

標準

標準/拡張機能 C/C++ 依存項目
z/OS®UNIX 両方  

形式

#include <stdlib.h>

char  *__getenv(const char *varname);

機能説明

__getenv() は、環境変数ごとに固有の文字ポインターを戻します。 したがって、単一スレッド・アプリケーションの場合、前の __getenv() 呼び出しで戻されたストリングをコピーする必要が なくなります。

マルチスレッド・アプリケーションではこの関数を使用しないでください。別のスレッドの環境変数を更新すると、アプリケーションが戻り値を コピーする前に __getenv() によって戻されるアドレスが無効になる 場合があります。

環境変数の形式は、以下を形成するために結合された 3 つのパートで構成されています。

      name=value

この場合、
  1. 最初の部分、name は環境変数の名前を表す 文字ストリングです。__getenv() が varname との突き合わせを試みるのは、環境変数のこのパートです。
  2. 2 番目の部分、= は区切り文字です (等号は区切り文字 として使用されるため、name 内には表示されません)。
  3. 3 番目のパート value は、環境変数 name が設定される値を表す、NULL 終了文字ストリングです。__getenv() は環境変数のこのパートへのポインターを戻します。
環境変数のセットを作成するいくつかの方法があります。
  • プログラム初期設定時に、Language Environment® ランタイム・ オプション ENVAR から設定する。
  • プログラム初期設定時に、データ・セットから設定する。
  • プログラムが system() 呼び出しで呼び出されていれば、呼び出し側のエンクレーブから継承できる。
  • z/OSUNIX 環境では、exec 関数の 1 つでプログラムが呼び出されている場合は、環境変数を親プロセスから継承できる。
  • プログラムの実行中に、それらは setenv() 関数または putenv() 関数で 設定できる。

z/OSUNIX サービスがサポートする環境変数については、「z/OS XL C/C++ プログラミング・ガイド」の『環境変数の使用』の トピックに示すリストを参照してください。

POSIX の特殊な動作: POSIX では、char **environ ポインターの値が尊重され、getenv() によって使用されます。 このポインターをユーザーが宣言および使用する ことができます。POSIX(OFF) の場合は異なります。つまり、テーブル開始は変更できません。

注: __getenv() 関数は、拡張 ASCII の拡張機能のレベルに依存します。詳細は、拡張 ASCII サポートを参照してください。

戻り値

正常に実行された場合、__getenv() は、varname で指定されている 環境変数の値を含むストリングへのポインターを戻します。

正常に実行されなかった場合、__getenv() は NULL ポインターを戻します。指定された 変数が現在定義されていない場合、またはシステムが環境変数をサポートしない 場合は、戻り値は NULL です。

関連情報