Namespaces
Variants

std:: getenv

From cppreference.net
Utilities library
ヘッダーで定義 <cstdlib>
char * getenv ( const char * env_var ) ;

ホスト環境(OS)が提供する 環境リスト を検索し、 env_var が指すC文字列に一致する文字列を探し、一致した環境リストメンバーに関連付けられたC文字列へのポインタを返します。

この関数はスレッドセーフである必要はありません。 getenv への別の呼び出し、およびPOSIX関数 setenv() unsetenv() putenv() の呼び出しは、以前の呼び出しで返されたポインタを無効化したり、以前の呼び出しで取得した文字列を変更したりする可能性があります。

(C++11まで)

この関数は、他の関数がホスト環境を変更しない限り、スレッドセーフです(複数のスレッドから呼び出してもデータ競合を引き起こしません)。特に、POSIX関数 setenv() unsetenv() putenv() は、同期なしで呼び出された場合、データ競合を引き起こします。

(C++11以降)

getenv によって返された文字列を変更することは未定義動作を引き起こします。

目次

パラメータ

env_var - 検索対象の環境変数名を特定するnull終端文字列

戻り値

環境変数の値を識別する文字列、またはそのような変数が見つからない場合はヌルポインタ。

注記

POSIXシステムでは、 環境変数 はグローバル変数 environ を通じてアクセス可能であり、これは extern char ** environ ; として <unistd.h> で宣言されています。また、 main関数 のオプションの第三引数 envp を通じてもアクセス可能です。

#include <cstdlib>
#include <iostream>
int main()
{
    if (const char* env_p = std::getenv("PATH"))
        std::cout << "Your PATH is: " << env_p << '\n';
}

出力例:

Your PATH is: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

関連項目

日本語訳:
翻訳内容: - "C documentation" → "Cドキュメント" - "getenv" はC++用語のため翻訳せず保持 - HTMLタグ、属性、構造は完全に保持 - "for" は文脈上、英語のままが適切と判断