-
C/C++ truncate(2) ftruncate(2)C,C++ & Linux 2020. 5. 18. 14:37728x90
truncate 함수 기능
파일의 크기를 조정하는 함수입니다.
함수 원형
#include <unistd.h> #include <sys/types.h> int truncate(const char *filepath, off_t length); int ftruncate(int fd, off_t length);
매개변수
filepath
대상 파일의 경로
fd
대상 파일의 파일 디스크립터
length
대상 파일의 새 파일 크기 (바이트 단위)
반환값
성공 시 0 리턴
에러 시 -1 리턴하고 errno 설정
예제
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> int main(int argc, char *argv[]) { char *fname = "ssu_test.txt"; int fd; char buf[1024]; int length; fd = open(fname, O_RDONLY); printf("before truncate\n"); // 파일을 읽어서 화면에 출력 // 파일 크기가 크기 때문에 꽤 많은 내용이 출력됨 length = read(fd, buf, sizeof(buf)); write(1, buf, length); printf("\n"); // 파일 크기를 10으로 조정 if (truncate(fname, 10) < 0) { fprintf(stderr, "truncate error\n"); exit(1); } // 파일 오프셋을 0으로 다시 세팅 후 lseek(fd, 0, SEEK_SET); printf("After truncate\n"); // 다시 읽어서 화면에 출력 // 하지만 파일 크기가 10으로 줄었기에 10 글자만 출력되게 됨 length = read(fd, buf, sizeof(buf)); write(1, buf, length); printf("\n"); exit(0); }
결과
리눅스시스템프로그래밍 저자 : 홍지만
https://book.naver.com/bookdb/book_detail.nhn?bid=14623672
책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)'C,C++ & Linux' 카테고리의 다른 글
C/C++ link(2) unlink(2) (0) 2020.05.18 하드링크, 심볼릭링크 (0) 2020.05.18 C/C++ chown(2) fchown(2) lchown(2) (0) 2020.05.18 C/C++ chmod(2), fchmod(2) (0) 2020.05.17 C/C++ umask(2) (1) 2020.05.17