LINK(2)

명칭
link - 하드 파일 링크를 작성한다

프로그램 라이브러리
libc

서식
<unistd.h> int link(const char *name1, const char *name2)

해설
link() 함수 호출은, name1 하지만 가리키는 하층 오브젝트의 속성을 가지는, 지정의 디렉토리 엔트리 (하드 링크) name2 (을)를 불가분에 작성합니다. 링크가 정상적으로 완료하면(자) 하층 오브젝트의 링크 카운트가 증가합니다. name1 (와)과 name2 (은)는, 하층 오브젝트에의 액세스와 액세스권을 동일하고 공유합니다.

name1 (을)를 삭제해도 파일 name2 (은)는 삭제되지 않고, 하층 오브젝트의 링크 카운트가 감소합니다.

name1 (은)는 하드 링크가 성공하기 위해서(때문에) 존재하고 있을 필요가 있어, name1 (와)과 name2 의 양쪽 모두가 같은 파일 시스템상에 존재하고 있을 필요가 있습니다. name1 (은)는 디렉토리에서 만나 되지 않습니다.

반환값

에러
link() (은)는 다음의 경우에 처리에 실패해, 링크는 작성되지 않습니다.

[ENOTDIR]
    몇개의 전치패스명의 원가요소가 디렉토리가 아닙니다.

[ENAMETOOLONG]
    몇개의 패스명의 원가요소가 255 캐릭터를 넘고 있는지, 또는 몇개의 패스명 전체의 길이가 1023 캐릭터를 넘고 있습니다.

[ENOENT]
    몇개의 전치패스명의 원가요소가 존재하지 않습니다.

[EOPNOTSUPP]
    name1 에 의해 지정된 파일이 들어가 있는 파일 시스템이 링크를 서포트하고 있지 않습니다.

[EMLINK]
    name1 그리고 지정된 파일의 링크 카운트가 32767 (을)를 넘습니다.

[EACCES]
    몇개의 전치패스명의 원가요소에 대해 검색 허가가 거부되고 있습니다.

[EACCES]
    요구된 링크는, 기록 허가를 거부하는 모드의 디렉토리에 기록 하는 것을 요구하고 있습니다.

[ELOOP]
    패스명을 변환할 경우에 검출된 기호 연결이 너무 많습니다.

[ENOENT]
    name1 에 의해 지정된 파일이 존재하지 않습니다.

[EEXIST]
    name2 에 의해 지정된 링크가 존재합니다.

[EPERM]
    name1 에 의해 지정된 파일은 디렉토리입니다.

[EXDEV]
    name2 에 의해 지정된 링크와 name1 에 의해 지정된 파일이 다른 파일 시스템상에 있습니다.

[ENOSPC]
    디렉토리를 격납하고 있는 파일 시스템에 용량이 남지 않기 때문에, 새로운 링크를 넣는 엔트리를 두는 디렉토리를 확장할 수 없습니다.

[EDQUOT]
    디렉토리를 격납하고 있는 파일 시스템으로 유저의 디스크 블록에 관한 쿼터가 고갈했기 때문에, 새로운 링크를 넣는 엔트리를 두는 디렉토리를 확장할 수 없습니다.

[EIO]
    디렉토리 엔트리를 작성하기 위해(때문에) 파일 시스템에 읽고 쓰기하고 있는 동안에 입출력 에러가 발생했습니다.

[EROFS]
    요구된 링크는, 읽기 전용 파일 시스템상의 디렉토리에 기록 하는 것을 요구하고 있습니다.

[EFAULT]
    지정된 패스명의 1 개가, 프로세스에 할당할 수 있었다 address 공간의 범위외를 가리키고 있습니다.

관련 항목
readlink(2), symlink(2), unlink(2)

표준
link() 함수는 p1003.1-90 에 준거하고 있습니다.

역사
link() 함수는 AT&T UNIX 그리고 등장했습니다.

종래, 슈퍼 유저는 link() 시스템 콜에 의해 디렉토리를 링크 할 수 있어 이것은 파일 시스템의 일관성을 파괴하는 것이었습니다. 이 실장에서는, 이러한 조작은 이미 용서되지 않습니다.