설명

파일을 지정한 크기로 변경합니다. 파일 크기를 변경하는 함수에는 2 가지가 있습니다.

  • truncate() : 파일 이름으로 파일 크기를 변경
  • ftruncate() : 파일 디스크립터로 파일 크기를 변경
헤더 unistd.h
형태 int ftruncate(int fildes, off_t length);
인수 int fildes 파일 디스크립터
  off_t length 파일 크기
반환 int

0 : 성공, -1: 실패

예제
// 예제에서는 파일의 크기를 100 byte로 변경합니다.
// 파일이 지정된 크기보다 작다면 나머지 채워지는 부분은 '\0'으로 채워지게 됩니다.

#include <stdio.h>         // puts()
#include <string.h>        // strlen()
#include <fcntl.h>         // O_WRONLY, O_CREAT
#include <unistd.h>        // write(), close(), ftruncate()

#define  BUFF_SIZE   1024

int main()
{
   int   fd;
   char *buff  = "forum.falinux.com";

   fd = open( "./test.txt", O_WRONLY ¦ O_CREAT, 0644);
   write(  fd, buff, strlen( buff));
   ftruncate( fd, 100);              // 파일 디스크립터로 파일 크기 조정

   close( fd);

   return 0;
}
]$ ./a.out
]$
파일을 헥사 에디터로 열어 보면 파일의 크기에 모자른 부분은 '\0'으로 채워진 것을 볼 수 있습니다.


'Linux > C/C++' 카테고리의 다른 글

strdup() 문자열의 clone 만들기  (0) 2012.07.11
fcntl() 레코드 잠금  (0) 2012.07.11
How to truncate a file in C?  (0) 2012.07.11
파일 유무 확인  (0) 2012.07.10
linux와 Windows의 파일 정보 접근  (0) 2012.07.10