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 |