LINK(2)

이름
link - 파일에 대한 새로운 이름을 만든다.

사용법
#include <unistd.h>

int link(const char *oldpath, const char *newpath);

설명
link는 존재하는 파일에 새로운 연결(하드 링크로 알려진)을 만든다. 만일 newpath가 존재한다면 그것은 덮어 씌우지 않는다. 새로운 이름은 어떠한 작동에서든지 예전 것과 동일하게 사용된다; 두 개의 이름은 같은 파일(같은 허가권과 소유권)을 참조하며 어떤 것이 `원본'이라고 말하기 어렵다.

반환값
성공시, 0을 반환한다. 에러시, -1을 반환하며, errno는 적당한 값으로 설정된다.

에러

EXDEV
    oldpath 과 newpath가 같은 파일 시스템에 있지 않다.

EPERM
    oldpath 과 newpath을 포함하는 파일 시스템은 하드 연결의 생성을 지원하지 않는다.

EFAULT
    oldpath 또는 newpath 가 접근할 수 없는 주소 공간을 가리키고 있다."

EACCES
    newpath를 포함하는 디렉토리에 대한 쓰기 접근이 프로세스의 유효 uid를 허용하지 않거나 oldpath 또는 newpath디렉토리 중 하나가 탐색(실행) 허가권을 가지고 있지 않다.

ENAMETOOLONG
    oldpath 또는 newpath가 너무 길다.

ENOENT
    oldpath 또는 newpath에 있는 디렉토리 요소가 존재하지 않거나 심볼릭 링크가 있다.

ENOTDIR
    oldpath 또는 newpath에서 디렉토리로 사용된 요소가 사실은 디렉토리가 아니다.

ENOMEM
    이용할수 있는 커널 메모리가 충분하지 않다.

EROFS
    파일이 읽기-전용 파일 시스템에 있다.

EEXIST
    newpath가 이미 존재한다.

EMLINK
    oldpath를 참조하는 파일이 연결할 수 있는 최대 수이다.

ELOOP
    너무 많은 심볼릭 링크를 oldpath 또는 newpath에서 만났다.

ENOSPC
    파일을 포함하는 장치에 새 디렉토리를 위한 공간이 더이상 없다.

EPERM
    oldpath가 디렉토리이다.

EIO I/O에러가 발생했다.

주의
link에 의해 만들어진 하드 연결은 서로 다른 파일시스템 사이로 연결할 수 없다. 파일시스템 사이를 연결 할려면 symlink 를 사용해라.

호환
SVr4, SVID, POSIX, BSD 4.3, X/OPEN. SVr4 문서는 ENOLINK 그리고 EMULTIHOP 에러 조건을 추가적으로 기술했다; POSIX.1는 ELOOP를 문서화 하지 않았다. X/OPEN 은 EFAULT, ENOMEM 또는 EIO를 문서화 하지 않았다.

버그
NFS 파일 시스템에서, NFS 서버가 연결 생성을 하고 그렇게 했다는 것을 말하기 전에 죽을 경우 반환 값은 틀릴 수 있다. 연결이 생성됐는지 발견하려면 stat(2)를 사용해라.

관련 항목
symlink(2), unlink(2), rename(2), open(2), stat(2), ln(1)

역자
정강훈 <skyeyes@soback.kornet.net>, 2000년 5월 28일