심볼릭 링크가 연결되어 있는 원본의 파일명을 얻는다.
#include <unistd.h>
int readlink(const char *path, char *buf, size_t bufsize);
|
readlink 는 심볼릭:::링크(:12)인 path 가 가르키는 원본의 파일이름을 돌려준다.
알아낸 원본파일의 이름은 buf 에 저장된다. bufsize 는 buf 의 저장
크기이다.
만약 buf 의 크기가 원본파일의 이름을 담기에 충분히 크지 않다면
나머지 부분은 잘리게 된다. readlink 는 원본파일의 완전한 경로 를
가져온다.
성공할경우 버퍼에 들어 있는 문자의 갯수가 반환되며, 에러가
발생했다면 -1 이 리턴되며 적당한 errno 코드가 설정된다.
- ENOTDIR
경로가 디렉토리(:12)가 아니다.
- EINVAL
bufsize 가 양수가 아닐경우
- ENAMETOOLONG
경로이름이 너무 길경우
- ENOENT
명명된 파일이 존재하지 않을경우
- EACCES
path 에 접근하기 위한 디렉토리 권한이 없을경우
- EINVAL
파일이 심볼릭 링크가 아닐때
#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의 실행파일 명이 될것이다.