getenv, getenv_s
|
헤더 파일에 정의됨
<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부터) |
getenv
에 대한 다른 호출이나 POSIX 함수인
setenv()
,
unsetenv()
, 그리고
putenv()
에 대한 호출은 이전 호출에서 반환된 포인터를 무효화하거나 이전 호출로부터 얻은 문자열을 수정할 수 있습니다.
getenv
가 반환하는 문자열을 수정하는 것은
정의되지 않은 동작을 유발합니다.
-
- name 이 null 포인터인 경우
- valuesz 가 RSIZE_MAX 보다 큰 경우
- value 가 null 포인터이고 valuesz 가 0이 아닌 경우
-
모든 경계 검사 함수와 마찬가지로,
getenv_s는 구현에 의해 __STDC_LIB_EXT1__ 가 정의되고 사용자가 __STDC_WANT_LIB_EXT1__ 를 정수 상수 1 으로 정의한 경우에만 사용 가능함이 보장됩니다 <stdlib.h> 를 포함하기 전에.
목차 |
매개변수
| name | - | 검색할 환경 변수의 이름을 식별하는 null 종료 문자열 |
| len | - |
getenv_s
가 환경 변수의 길이를 저장할 사용자 제공 위치에 대한 포인터
|
| value | - |
getenv_s
가 환경 변수의 내용을 저장할 사용자 제공 문자 배열에 대한 포인터
|
| valuesz | - |
getenv_s
가
dest
에 기록할 수 있는 최대 문자 수 (버퍼의 크기)
|
반환값
참고 사항
POSIX 시스템에서
환경 변수
는 전역 변수
environ
를 통해서도 접근할 수 있으며, 이는
extern
char
**
environ
;
로
<unistd.h>
에 선언되어 있습니다. 또한
main 함수
의 선택적 세 번째 인수인
envp
를 통해서도 접근 가능합니다.
getenv_s
호출에서
value
에 null 포인터를,
valuesz
에 0을 지정하면 전체 결과를 보관하는 데 필요한 버퍼 크기를 확인하는 데 사용됩니다.
예제
#include <stdio.h> #include <stdlib.h> int main(void) { const char *name = "PATH"; const char *env_p = getenv(name); if (env_p) printf("Your %s is %s\n", name, env_p); }
가능한 출력:
Your PATH is /home/gamer/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/share/games
참고문헌
- C23 표준 (ISO/IEC 9899:2024):
-
- 7.22.4.6 getenv 함수 (p: TBD)
-
- K.3.6.2.1 getenv_s 함수 (p: TBD)
- C17 표준(ISO/IEC 9899:2018):
-
- 7.22.4.6 getenv 함수 (p: 256-257)
-
- K.3.6.2.1 getenv_s 함수 (p: 440-441)
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.22.4.6 getenv 함수 (p: 352-353)
-
- K.3.6.2.1 getenv_s 함수 (p: 606-607)
- C99 표준 (ISO/IEC 9899:1999):
-
- 7.20.4.5 getenv 함수 (p: 317)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 4.10.4.4 getenv 함수
참고 항목
|
C++ 문서
에 대한
getenv
|