메뉴

문서정보

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=readlink">readlink</a>(2)

1장. readlink(2)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 에러
1.5절. 예제

심볼릭 링크가 연결되어 있는 원본의 파일명을 얻는다.


1.1절. 사용법

#include <unistd.h>

int readlink(const char *path, char *buf, size_t bufsize);
		


1.2절. 설명

readlink 는 심볼릭:::링크(:12)인 path 가 가르키는 원본의 파일이름을 돌려준다. 알아낸 원본파일의 이름은 buf 에 저장된다. bufsize 는 buf 의 저장 크기이다.

만약 buf 의 크기가 원본파일의 이름을 담기에 충분히 크지 않다면 나머지 부분은 잘리게 된다. readlink 는 원본파일의 완전한 경로 를 가져온다.


1.3절. 반환값

성공할경우 버퍼에 들어 있는 문자의 갯수가 반환되며, 에러가 발생했다면 -1 이 리턴되며 적당한 errno 코드가 설정된다.


1.4절. 에러

ENOTDIR

경로가 디렉토리(:12)가 아니다.

EINVAL

bufsize 가 양수가 아닐경우

ENAMETOOLONG

경로이름이 너무 길경우

ENOENT

명명된 파일이 존재하지 않을경우

EACCES

path 에 접근하기 위한 디렉토리 권한이 없을경우

EINVAL

파일이 심볼릭 링크가 아닐때


1.5절. 예제

#include <unistd.h>

int main()
{
    char buf[255];

    memset(buf, 0x00, 255);
    readlink("/proc/2184/exe", buf, 255);
    printf("%s\n", buf);
}
		
이 예제는 /proc/2184/exe 가 가르키고 있는 원본파일의 이름을 가져온다. 이 파일은 PID(:12) 2184의 실행파일 명이 될것이다.