Scroll to navigation

TRUNCATE(2) 리눅스 프로그래머 매뉴얼 TRUNCATE(2)

이름

truncate, ftruncate - 지정된 길이로 파일을 자른다.

사용법

#include <unistd.h>

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

설명

Truncatepath로 지정된 파일이나 fd로 참조되는 파일을 length 바이트 크기로 자른다. 만일 파일이 이 크기보다 크다면, 나머지 데이터는 잃는다. 만일 파일이 이 크기보다 작다면, 파일이 변화없이 그대로 일지 확장될 지는 알 수 없다. 후자의 경우 확장된 부분은 0으로 채워진다. ftruncate에서 파일은 쓰기 위해 열려져 있어야 한다.

반환값

성공시, 0이 리턴된다. 에러시, -1이 리턴되며, errno는 적당한 값으로 설정된다.

에러

truncate:

경로 접두사 요소가 디렉토리가 아니다.
경로 이름에 high-order 비트가 설정된 문자가 포함되있다 (올바른 ASCII 문자가 아니다).
경로 이름 요소가 255자를 넘었거나, 전체 경로 이름이 1023자를 넘었다.
지정된 파일이 존재하지 않는다.
경로 접두사 요소에 대한 탐색 허가가 거부되었다.
지정된 파일을 사용자가 쓸 수 없다.
경로를 찾아갈 때, 너무 많은 심볼릭 링크가 존재한다.
지정된 파일이 디렉토리이다.
지정된 파일이 읽기 전용 파일 시스템에 있다.
파일이 실행되고 있는 순수 절차 파일(공유된 텍스트)이다.
inode 갱신 중에 I/O에러가 발생했다.
Path가 프로세스에 할당된 영역 밖을 가리키고 있다.

ftruncate:

fd가 유효한 기술자가 아니다.
fd가 파일이 아니라, 소켓을 가리키고 있다.
fd가 쓰기 위해 열려있지 않다.

호환

4.4BSD, SVr4 (이 시스템 콜은 BSD 4.2에서 처음으로 나타났다). SVr4는 truncate 에러 조건인 EINTR, EMFILE, EMULTIHP, ENAMETOOLONG, ENFILE, ENOLINK, ENOTDIR을 추가적으로 기술한다. SVr4는 ftruncate 를 위한 EAGAIN 그리고 EINTR 에러 조건을 추가적으로 기술한다. POSIX에는 ftruncate는 있지만 truncate는 없다.

버그

이 시스템 콜은 파일에서 바이트의 영역을 버릴 수 있도록 일반화되어야 한다.

관련 항목

open(2)

역자

정강훈 <skyeyes@soback.kornet.net>, 5월 13일

1998년 12월 21일