UNLINK(2)

명칭
unlink - 디렉토리 엔트리의 삭제

프로그램 라이브러리
libc

서식
<unistd.h> int unlink(const char *path)

해설
unlink() 함수는, path 그리고 지정된 링크를 디렉토리로부터 삭제해, 그 링크로 참조되고 있던 파일의 링크수를 줄입니다. 파일의 링크수가 0 이 되어, 파일을 열고 있는 프로세스가 없어지면(자), 파일에 관련하는 모든 리소스가 재이용됩니다. 마지막 링크가 삭제되었을 때에, 파일을 열고 있는 프로세스가 1 개(살) 이상 있으면(자), 링크는 삭제됩니다만, 파일의 삭제는, 그 파일에의 모든 참조가 닫혀질 때까지 연기됩니다. path (은)는, 디렉토리가 아닌 경우도 있습니다.

반환값

에러
unlink() (은)는, 이하의 경우에 처리를 실패합니다.

[ENOTDIR]
    패스의 원가요소중에 디렉토리 이외의 것이 포함되어 있습니다.

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

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

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

[EACCES]
    삭제하는 링크를 포함한 디렉토리에서, 기록 허가가 거부되고 있습니다.

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

[EPERM]
    지정된 파일이 디렉토리가 되어 있습니다.

[EPERM]
    파일을 포함한 디렉토리가 스티키와 마크 되어 삭제하는 파일을 포함한 디렉토리 또는 파일이, 유효한 유저 ID 에 소유되고 있지 않습니다.

[EBUSY]
    링크를 삭제하는 엔트리가, mount가 끝난 파일 시스템의 마운트 포인트입니다.

[EIO]
    디렉토리 엔트리의 삭제중인가, inode 의 할당 해제중에 입출력 에러가 발생했습니다.

[EROFS]
    지정된 파일은 읽기 전용 파일 시스템상에 있습니다.

[EFAULT]
    path (은)는, 프로세스에 할당할 수 있었던 address 공간의 범위외를 가리키고 있습니다.

관련 항목
close(2), link(2), rmdir(2), symlink(7)

역사
unlink() 함수 소환은, AT&T UNIX 그리고 등장했습니다.

고래의 unlink() 시스템 콜에서는, 파일 시스템을 파괴할 가능성이 있는 디렉토리의 링크를 슈퍼 유저가 삭제할 수 있게 되어 있습니다. 그것을 실행하는 것은, 벌써 허가되지 않게 되어 있습니다.