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

truncate(2)

1장. truncate(2)

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

파일을 지정된 길이로 자른다.


1.1절. 사용법

#include <unistd.h>

int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
		


1.2절. 설명

truncate 는 path 로 지정된 파일이나 fd 로 참조되는 파일을 length 바이트 크기가 되도록 자른다. 만약 파일이 length 보다 크다면 length 이후의 데이타는 잃게된다. 만약 파일이 이 크기보다 작다면 파일이 그대로 있을지 아니면 확장될지는 알수 없다. 확장될경우에는 0으로 채워진다. ftruncate 의 경우 파일은 쓰기가능 상태로 열려져 있어여 한다.


1.3절. 반환값

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


1.4절. 에러

ENOTDIR

경로 접두사 요소가 디렉토리가 아니다.

ENAMETOOLONG

경로 이름 요소가 255자를 넘었거나, 전체 경로 이름이 1023 자를 넘었다.

ENOENT

지정된 파일이 존재하지 않을경우

EACCESS

경로의 요소에 대한 탐색허가가 거부되었다. 혹은 지정된 파일을 사용자가 쓸수 없을경우

EBADFD

fd 가 유효한 기술자가 아니다.

EINVAL

fd 가 파일이 아니고 소켓을 가리키고 있다.

EINVAL

fd 가 쓰기 가능으로 열려있지 않다.


1.5절. 예제

#include <unistd.h>

#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>

int main()
{
    int fd;
    fd = open("test4.txt", O_RDWR);

    if (ftruncate(fd, 20) < 0)
    {
        perror("error : ");
    }

    close(fd);
}
		
위의 프로그램은 test4.txt 파일을 20byte 크기로 자른다. 20byte 후의 데이타는 잃게 된다.