名前空間
変種
操作

getenv, getenv_s

提供: cppreference.com
< c‎ | program
ヘッダ <stdlib.h> で定義
char *getenv( const char *name );
(1)
errno_t getenv_s( size_t *restrict len, char *restrict value,
                  rsize_t valuesz, const char *restrict name );
(2) (C11およびそれ以降)
1) ホスト指定の環境リストから名前 name を持つ環境変数を検索し、一致した環境変数に紐付けられている文字列を指すポインタを返します。 環境変数の集合およびそれを変更する方法は処理系定義です。
この関数はスレッドセーフであることは要求されていません。 getenv の別の呼び出しや POSIX の関数 setenv()unsetenv()putenv() は、以前の呼び出しで返されたポインタを無効化したり、以前の呼び出しで取得した文字列を変更する可能性があります。
getenv によって返された文字列の変更は未定義動作です。
2) (1) と同じですが、環境変数の値はユーザ提供のバッファ value に書き込まれ (ヌルでなければ)、書き込まれたバイト数がユーザ提供の位置 *len に格納されます (ヌルでなければ)。 環境に環境変数が設定されていない場合は、ゼロが *len に書き込まれ (ヌルでなければ)、 '\0'value[0] に書き込まれます (ヌルでなければ)。 さらに、以下のエラーが実行時に検出され、現在設定されている制約ハンドラ関数を呼びます。
  • name がヌルポインタ。
  • valueszRSIZE_MAX より大きい。
  • value がヌルポインタまたは valuesz がゼロでない。
すべての境界チェック付き関数と同様に、 getenv_s__STDC_LIB_EXT1__ が処理系によって定義されていて、 <stdlib.h> をインクルードする前にユーザが __STDC_WANT_LIB_EXT1__ を整数定数 1 に定義した場合にのみ、利用可能であることが保証されます。

目次

[編集] 引数

name - 検索する環境変数の名前を表すヌル終端文字列
len - 環境変数の長さを格納するユーザ提供の位置を指すポインタ
value - 環境変数の内容を格納するユーザ提供の文字配列を指すポインタ
valuesz - 格納先に書き込むことが許される最大文字数 (バッファのサイズ)

[編集] 戻り値

1) 環境変数の値を表す文字列、またはそのような変数が見つからなかった場合はヌルポインタ。
2) 環境変数が見つかった場合はゼロ、見つからなかった場合または実行時制約違反が発生した場合は非ゼロ。 何らかのエラーが発生した場合、ゼロが *len に書き込まれます (len がヌルポインタでなければ)。

[編集] ノート

POSIX システムでは、環境変数<unistd.h>extern char **environ; として宣言されているグローバル変数 environ および main 関数のオプショナルな第3引数 envp を通してもアクセス可能です。

value にヌルポインタを、 valuesz にゼロを指定した getenv_s の呼び出しは、結果全体を保持するために必要なバッファサイズを決定するために使用されます。

[編集]

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    char *env_p = getenv("PATH");
    if (env_p)
        printf("PATH = %s\n", env_p);
}

出力例:

PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

[編集] 参考文献

  • C11 standard (ISO/IEC 9899:2011):
  • 7.22.4.6 The getenv function (p: 352-353)
  • K.3.6.2.1 The getenv_s function (p: 606-607)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.20.4.5 The getenv function (p: 317)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.10.4.4 The getenv function

[編集] 関連項目