본문 바로가기

os/리눅스

unlink()

1 함수 원형 
#include <unistd.h>

int unlink(const char *pathname);


2 동작 

unlink 는 파일 시스템에서 pathname 이름을 가진 파일을 지운다. 만약 지우려는 파일이 파일에 대한 가장최근연결(링크가 오직 하나라면) 이며, 다른 어떠한 프로세스도 이 파일을 열고 있지 않다면, 파일은 지워지고, 파일이 사용한 공간은 사용가능하도록 파일시스템에 되돌려준다.

만약 지우려는 파일의 가장 최근 연결된 파일이지만, 이 파일을 다른 프로세스가 열고 있다면, 다른 프로세스가 이 파일을 닫을때까지 파일은 존재한체로 남게 되다.

만약 pathname이 심볼릭 링크파일이라면 연결은 제거된다.


3 return

성공할경우 0을 실패했을경우에는 -1을 반환하며, 적당한 errno 값을 설정한다.


4 error

다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.


EACCESS
pathname 을 포함하는 디렉토리에 대한 쓰기접근이 허용되지 않았거나, pathname 의 디렉토리중 어느 하나에 대한 실행 허가권을 가지고 있지 않을때

EPERM
파일 pathname 이 디렉토리 파일일때.

ENOTDIR
pathname 이 디렉토리를 가리킬때.

EROFS
pathname 이 읽기전용의 파일시스템을 가리킬때


예제

#include <unistd.h>

#include <stdio.h>


int main(int argc, char **argv)
{
    if (access(argv[1], F_OK) !=0 )
    {
        printf("파일 %s 가 존재하지 않습니다\n", argv[1]);
        exit(0);
    }
    unlink(argv[1]);
    printf("삭제 완료\n");
    exit(0);
}

'os > 리눅스' 카테고리의 다른 글

getuid()  (0) 2009.11.02
access()  (0) 2009.11.02
Race Condition  (0) 2009.10.31
fork() 함수에 대해서..  (5) 2009.10.30
/var/lib/dpkg/lock 잠근 파일을 얻을 수 없습니다. 에러~  (0) 2009.10.30