GETCWD(3)

명칭
getcwd, getwd - 작업 디렉토리의 패스명을 취득한다

프로그램 라이브러리
libc

서식
<unistd.h> char * getcwd(char *buf, size_t size) char * getwd(char *buf)

해설
getcwd() 함수는, 현재의 작업 디렉토리의 절대 패스명을 buf 그리고 참조되는 메모리에 카피해, buf 에의 포인터를 돌려줍니다. size 인수는, buf 그리고 참조되는 배열의 바이트수에 의한 사이즈입니다.

buf 하지만 NULL 의 경우는, 패스명을 보존하는데 필요한 만큼의 공간이 할당해집니다. 이 공간은 다음에 free(3) 할 수 있습니다.

함수 getwd() (은)는, getcwd() (을)를 buf 인수와 사이즈로서 (인클루드 파일 <sys/param.h> 그리고 정의되었다) MAXPATHLEN (을)를 이용해 호출한 것과 동등의 함수입니다. buf 하지만 적어도, MAXPATHLEN 바이트의 길이를 가지지 않으면 안 되는 것은 분명합니다.

이러한 routine는 종래, 작업 디렉토리로 돌아오기 위해서(때문에) 그 이름을 보존하는 것 같은 프로그램에 의해 사용되어 왔습니다. 이것을 보다 빠르게 잘못해 없게 수행하는 것으로서 커런트 디렉토리 (‘.’) (을)를 오픈해 두어, fchdir(2) 함수를 사용해 돌아오는 방법이 있습니다.

반환값
무사하게 완료했을 경우는 패스명에의 포인터가 돌아갑니다. 그렇지 않으면 NULL 포인터가 돌아가, 에러를 나타내기 (위해)때문에 글로벌 변수 errno 하지만 설정되어 한층 더 getwd() 하지만 errno 에 관련하는 에러 메세지를 buf 그리고 참조되는 메모리에 카피합니다.

에러
getcwd() 함수는 다음의 경우에 실패합니다.

[EACCES]
    패스명의 원가요소에 대해, 읽어들여 또는 검색의 퍼미션이 거부되었습니다.

[EINVAL]
    size 인수가 0 입니다.

[ENOENT]
    패스명의 원가요소가 이미 존재하지 않습니다.

[ENOMEM]
    이용할 수 있는 메모리가 충분하지는 않습니다.

[ERANGE]
    size 인수가, 0 보다 큽니다만, 패스명 + 1 보다 작습니다.

관련 항목
chdir(2), fchdir(2), malloc(3), strerror(3)

표준
getcwd() 함수는, p1003.1-90 에 적합하고 있습니다. NULL 포인터를 지정해, 필요에 따라서 getcwd() 에 메모리를 할당하게 하는 기능은 확장 부분입니다.

역사
getwd() 함수는, 4.0BSD 그리고 처음 등장했습니다.

버그
getwd() 함수는 에러 체크를 충분히 가고 있지 않습니다. 또 매우 긴 패스명은, 유효해도 돌려줄 수가 없습니다. 이 함수는, 호환성을 위해서(때문에) 제공되고 있습니다.