반응형
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 :
반응형
'C언어 header > unistd.h' 카테고리의 다른 글
usleep(3) - 설정된 micro초(microsecond: 100만분의 1초) 동안 대기 (0) | 2019.10.01 |
---|---|
unlink(2) - 파일 삭제 (1) | 2019.10.01 |
sync(2) - 전체 kernel buffer를 동기화 하기 (0) | 2019.10.01 |
symlink(2) - 새로운 symbolic link 생성 (0) | 2019.10.01 |
stat(2) - 파일의 상태 및 정보를 얻는 함수 (0) | 2019.10.01 |