Namespaces
Variants

std::getenv

From ko.cppreference.net
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
Integer comparison functions
(C++20)(C++20)(C++20)    
(C++20)
Swap and type operations
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
Defined in header <cstdlib>
char* getenv( const char* env_var );

호스트 환경(운영 체제)이 제공하는 환경 리스트를 검색하여 env_var이 가리키는 C 문자열과 일치하는 문자열을 찾고, 일치하는 환경 리스트 멤버와 연결된 C 문자열을 가리키는 포인터를 반환합니다.

이 함수는 스레드 안전성이 요구되지 않습니다. getenv에 대한 또 다른 호출, 그리고 POSIX 함수 setenv(), unsetenv(), putenv()에 대한 호출은 이전 호출이 반환한 포인터를 무효화하거나 이전 호출에서 얻은 문자열을 수정할 수 있습니다.

(C++11까지)

이 함수는 스레드 안전합니다(여러 스레드에서 호출해도 데이터 경합이 발생하지 않음). 단, 다른 함수가 호스트 환경을 수정하지 않는 경우에 한합니다. 특히, POSIX 함수 setenv(), unsetenv(), putenv()는 동기화 없이 호출되면 데이터 경합을 유발합니다.

(C++11부터)

getenv가 반환한 문자열을 수정하는 것은 정의되지 않은 동작을 유발합니다.

매개변수

env_var - 검색할 환경 변수의 이름을 식별하는 null로 종료된 문자열

반환값

환경 변수의 값을 식별하는 문자열 또는 해당 변수를 찾을 수 없는 경우 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

참고 항목