truncate(2)

#include <unistd.h>
#include <sys/types.h>

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

쓰기 권한이 있는 path의 파일을 length 길이 만큼의 크기로 변경합니다. length가 파일의 크기보다 작으면 length만큼의 크기로 파일 뒤쪽을 자릅니다. length가 파일의 크기보다 크면 파일의 크기를 length만큼으로 변경하고 0x00으로 채웁니다.

 

 

파라미터

path
    - 파일의 크기를 변경할 파일명(full path 또는 상대 path)
length
    - 조정할 파일 size

 

RETURN

0
    - 정상적으로 처리되었습니다.
    
    
-1
    -오류가 발생하였으며, 상세오류내용은 errno에 설정되었습니다.

 EACCES : 파일에 대한 쓰기 권한이 없거나 path에 포함된 디렉토리에 search(실행권한)권한이 없는 경우
 EFAULT : path 변수가 메모리 영역이 prcess가 할당한 영역이 아님
 EFBIG  : Max file 사이즈를 초과함.
 EINTR  : signal이 catch되어 중단됨
 EINVAL : length가 -값이거나 Max file size보다 큼
 EIO    : inode를 update하다가 오류가 발생함.
 EISDIR : path가 파일이 아닌 디렉토리임
 ELOOP  : symbolic link의 호출 depth가 너무 깊음
 ENAMETOOLONG : file명 255자, full path명이 1023자보다 큼.
 ENOENT : 파일이 존재하지 않음
 ENOTDIR: path를 구성하는 directory가 없는 디렉토리임.
 EPERM  : 파일 시스템이 현재 파일 크기보다 크게 만들 수 없음.
 EROFS  : read only file system임
 ETXTBSY: 파일이 실행중임.

 


활용 예제

 

Sample

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>

int main(int argc, char *argv[])
{

    ......

    if(truncate("./myprogram.log", 0) == -1) {
        fprintf(stderr, "log truncate error: %s\n", strerror(errno));
        return 1;
    } else {
        printf("log file을 초기화하였습니다.\n");
    }

    ......

}

 


 

see also :

    File 속성 정보 및 파일 관리 Library

    Directory 정보 조회 및 관리 Library

    System Call File I/O Library

    Stream File I/O Library

 

블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요