Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
Docbook 원문

remove(3)

1장. remove(3)

차례
1.1. 사용법
1.2. 설명
1.3. 반환값
1.4. 에러
1.5. 예제

프로그램 명령행 인자를 파싱한다.


1.1. 사용법

#include <stdio.h>

int remove(const char *pathname);
        


1.2. 설명

파일시스템에서 파일을 삭제한다. 이 함수는 내부적으로 unlink(2)와 rmdir(2)를 호출한다.

만약 삭제하는 파일이 마지막 링크이고 파일을 열고 있는 프로세스가 더 이상없다면 파일은 디스크 공간에서 완전히 삭제된다. 삭제된 공간은 다른 파일에 의해서 사용이 된다.

삭제하고자 하는 파일이 마지막 링크이지만, 파일을 열고 있는 프로세스가 있을 경우 해당 프로세스가 파일을 close()할때까지 여전히 남아 있게 된다.

삭제하고자 하는 파일이 symbolic 링크일 경우 링크가 삭제된다.

삭제하고자 하는 파일이 socket(12), fifo(12)일경우 파일은 삭제되지만, 해당 객체는 여전히 프로세스에 의해서 사용되어진다.


1.3. 반환값

성공할 경우 0을리턴한다. 실패할 경우 -1을 리턴하고 적당한 errno값이 설정된다.


1.4. 에러

EFAULT

pathname을 가리키는 포인터가 접근가능한 주소영역을 벗어났다.

EACCES

부모 디렉토리가 프로세스에게 쓰기 허가권을 허락하지 않았거나, pathname에 있는 디렉토리 중 하나가 찾기 허가권이 없다.

ENOENT

pathname을 포함한 디렉토리 혹은 파일이 존재하지 않는다.

ENAMETOOLONG

pathname이 너무 길다.

ENODIR

pathname에 디렉토리로서 사용한 요소가 디렉토리가 아니다.

ENOMEM

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

EROFS

pathname가 읽기 전용 파일 시스템에 있는 파일을 가리키고 있다.


1.5. 예제

#include <stdio.h>
#include <errno.h>

int main(int argc, char **argv)
{
	int rtv;

	if (argc !=2 )
	{
		printf("Usage : ./remove filename\n");
		exit(0);
	}	
	if(remove(argv[1]) != 0)
	{
		perror("file remove error ");
		return 1;
	}
	return 0;
}