TRUNCATE(2) | 리눅스 프로그래머 매뉴얼 | TRUNCATE(2) |
이름¶
truncate, ftruncate - 지정된 길이로 파일을 자른다.
사용법¶
#include <unistd.h>
int truncate(const char *path, off_t
length);
int ftruncate(int fd, off_t length);
설명¶
Truncate는 path로 지정된 파일이나 fd로 참조되는 파일을 length 바이트 크기로 자른다. 만일 파일이 이 크기보다 크다면, 나머지 데이터는 잃는다. 만일 파일이 이 크기보다 작다면, 파일이 변화없이 그대로 일지 확장될 지는 알 수 없다. 후자의 경우 확장된 부분은 0으로 채워진다. ftruncate에서 파일은 쓰기 위해 열려져 있어야 한다.
반환값¶
성공시, 0이 리턴된다. 에러시, -1이 리턴되며, errno는 적당한 값으로 설정된다.
에러¶
truncate:
- ENOTDIR
- 경로 접두사 요소가 디렉토리가 아니다.
- EINVAL
- 경로 이름에 high-order 비트가 설정된 문자가 포함되있다 (올바른 ASCII 문자가 아니다).
- ENAMETOOLONG
- 경로 이름 요소가 255자를 넘었거나, 전체 경로 이름이 1023자를 넘었다.
- ENOENT
- 지정된 파일이 존재하지 않는다.
- EACCES
- 경로 접두사 요소에 대한 탐색 허가가 거부되었다.
- EACCES
- 지정된 파일을 사용자가 쓸 수 없다.
- ELOOP
- 경로를 찾아갈 때, 너무 많은 심볼릭 링크가 존재한다.
- EISDIR
- 지정된 파일이 디렉토리이다.
- EROFS
- 지정된 파일이 읽기 전용 파일 시스템에 있다.
- ETXTBSY
- 파일이 실행되고 있는 순수 절차 파일(공유된 텍스트)이다.
- EIO
- inode 갱신 중에 I/O에러가 발생했다.
- EFAULT
- Path가 프로세스에 할당된 영역 밖을 가리키고 있다.
ftruncate:
호환¶
4.4BSD, SVr4 (이 시스템 콜은 BSD 4.2에서 처음으로 나타났다). SVr4는 truncate 에러 조건인 EINTR, EMFILE, EMULTIHP, ENAMETOOLONG, ENFILE, ENOLINK, ENOTDIR을 추가적으로 기술한다. SVr4는 ftruncate 를 위한 EAGAIN 그리고 EINTR 에러 조건을 추가적으로 기술한다. POSIX에는 ftruncate는 있지만 truncate는 없다.
버그¶
이 시스템 콜은 파일에서 바이트의 영역을 버릴 수 있도록 일반화되어야 한다.
관련 항목¶
역자¶
정강훈 <skyeyes@soback.kornet.net>, 5월 13일
1998년 12월 21일 |