GETENV(3)

명칭
getenv, putenv, setenv, unsetenv - 환경 변수 함수

프로그램 라이브러리
libc

서식
<stdlib.h> char * getenv(const char *name) int setenv(const char *name, const char *value, int overwrite) int putenv(const char *string) void unsetenv(const char *name)

해설
이러한 함수는, 환경 변수를 설정 혹은 삭제해, 또 호스트의 environment list (으)로부터 그것들을 꺼냅니다. 다른 관습의 환경과의 호환성이기 때문에, 주어진 인수 name 및 value (은)는 각각, 등가 기호 “=” 에 의해 후에 부가하는 일도, 전에 부가할 수도 있습니다.

getenv() 함수는, 환경 변수 name 의 현재의 값을 취득합니다. 변수 name 하지만 현재의 환경에 없는 경우는, null 포인터가 돌아갑니다.

setenv() 함수는, 환경 변수 name (을)를 현재의 환경 리스트에 삽입 또는 재설정합니다. 변수 name 하지만 리스트에 없는 경우는, 주어졌다 value (으)로 설정되어 삽입됩니다. 변수가 존재하는 경우는 인수 overwrite 하지만 검사되어 overwrite 하지만 0 이라면 변수 name (은)는 재설정되지 않습니다. 그 외의 경우는, 주어진 값에 재설정됩니다.

putenv() 함수는, ``name=value''의 형태로 인수를 취합니다. 이것은 다음과 등가입니다.

    setenv(name, value, 1);

unsetenv() 함수는, name 그리고 나타나는 변수명의 인스턴스를, 리스트로부터 모두 삭제합니다.

반환값

에러

[ENOMEM]
    환경에 메모리를 할당할 수가 없었기 때문에, 함수 setenv() 또는 putenv() (은)는 실패했습니다.

관련 항목
csh(1), sh(1), execve(2), environ(7)

표준
getenv() 함수는, isoC 에 적합하고 있습니다.

버그
다른 크기의 value (을)를 같다 name (으)로 설정하는, 연속했다 setenv() (이)나 putenv() 의 호출은, 메모리 리크를 일으킵니다. FreeBSD 남을 수 있는들의 함수의 시멘틱스 (즉 value 의 내용은 카피되어 그 낡은 값은 언제까지나 액세스 가능인 채 남겨진다) 에 의해, 이 버그는 회피 불능입니다. 이 버그를 수정하기 위해서, 장래의 버젼에서는, 이 시멘틱스의 프로텍션의 하나, 혹은 양쪽 모두를 삭제할지도 모릅니다.

역사
함수 setenv() 및 unsetenv() (은)는, AT&T UNIX 그리고 처음 등장했습니다. putenv() 함수는, 4.3BSD Reno 그리고 처음 등장했습니다.