NAME

clearenv - 환경 비우기

SYNOPSIS

#include <stdlib.h>

int clearenv(void);

glibc 기능 확인 매크로 요건 (feature_test_macros(7) 참고):

clearenv():
/* glibc 2.19부터: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

DESCRIPTION

clearenv() 함수는 환경에서 모든 이름-값 짝을 비우고 외부 변수 environ의 값을 NULL로 설정한다. 이 호출 후에 putenv(3)setenv(3)를 이용해 환경에 새 변수를 추가할 수 있다.

RETURN VALUE

clearenv() 함수는 성공 시 0을 반환하고 실패 시 0 아닌 값을 반환한다.

VERSIONS

glibc 2.0부터 사용 가능.

ATTRIBUTES

이 절에서 사용하는 용어들에 대한 설명은 attributes(7)를 보라.

인터페이스 속성
clearenv() 스레드 안전성 MT-Unsafe const:env

CONFORMING TO

다양한 유닉스 변종들(DG/UX, HP-UX, QNX, ...). POSIX.9 (FORTRAN77 바인딩). POSIX.1-1996에서는 clearenv()putenv(3)를 받아들이지 않았지만 마음을 바꿔서 이후 어느 버전에서 그 함수들을 추가하기로 했다. (B.4.6.1절 참고.) 하지만 POSIX.1-2001에서 putenv(3)만 추가하고 clearenv()는 거부했다.

NOTES

clearenv()가 없는 시스템에서는 아마 다음 할당으로도 될 것이다.

environ = NULL;

exec(3)로 실행되는 프로그램에 전달되는 환경을 신중하게 통제하고 싶은 보안 중시 응용들에서 clearenv() 함수가 유용할 수 있다. 그런 응용에서는 먼저 환경을 비운 다음 정선한 환경 변수들을 추가하게 될 것이다.

참고로 clearenv()의 주된 효과는 포인터 environ(7)의 값을 조정하는 것이다. 환경 정의를 담은 버퍼들의 내용을 삭제하지는 않는다.

DG/UX 및 Tru64 맨 페이지에는 이렇게 적혀 있다: putenv(3), getenv(3), clearenv() 외의 어떤 방법으로 environ을 변경했으면 clearenv()가 오류를 반환하게 되며 프로세스 환경이 그대로 유지된다.

SEE ALSO

getenv(3), putenv(3), setenv(3), unsetenv(3), environ(7)


2021-03-22