TRUNCATE(2)

명칭
truncate, ftruncate - 지정한 길이에 파일을 잘라 버리거나 확장하거나 한다

프로그램 라이브러리
libc

서식
<unistd.h> int truncate(const char *path, off_t length) int ftruncate(int fd, off_t length)

해설
truncate() (은)는, path 그리고 지정되는 파일인가 fd 그리고 참조 되는 파일의 사이즈가, length 바이트가 되도록(듯이) 잘라 버리거나 확장합니다. 파일이 이 사이즈보다 큰 경우는, 여분의 데이터가 없어집니다. 파일이 이 사이즈보다 작은 경우는, 0 이 기입해진 것처럼 확장됩니다. ftruncate() 그럼, 파일이 기록용으로 열려 있을 필요가 있습니다.

반환값

에러
truncate() (은)는, 이하와 같은 경우에 처리를 실패합니다.

[ENOTDIR]
    패스의 원가요소중에 디렉토리 이외의 것이 포함되어 있습니다.

[ENAMETOOLONG]
    패스명의 원가요소가 255 캐릭터를 넘고 있는지, 또는 패스명 전체가 1023 캐릭터를 넘고 있습니다.

[ENOENT]
    지정된 파일이 존재하지 않습니다.

[EACCES]
    전치패스명의 원가요소에 대해 검색 허가가 거부되고 있습니다.

[EACCES]
    지정된 파일에 유저가 쓰기선.

[ELOOP]
    패스명을 변환할 경우에 검출된 기호 연결이 너무 많습니다.

[EISDIR]
    지정된 파일이 디렉토리가 되어 있습니다.

[EROFS]
    지정된 파일은 읽기 전용 파일 시스템상에 있습니다.

[ETXTBSY]
    파일이, 실행중의 퓨어 프로시저 (공유 텍스트) 파일입니다.

[EIO]
    inode 의 갱신을 하고 있는 동안에 입출력 에러가 발생했습니다.

[EFAULT]
    path (은)는, 프로세스에 할당할 수 있었던 address 공간의 범위외를 가리키고 있습니다.

ftruncate() (은)는, 이하와 같은 경우에 처리를 실패합니다.

[EBADF]
    fd 하지만 유효한 기술자가 아닙니다.

[EINVAL]
    fd (은)는 파일은 아니고 소켓을 참조하고 있습니다.

[EINVAL]
    fd 하지만 기록용으로 열려 있지 않습니다.

관련 항목
open(2)

버그
이 소환은, 파일이 있는 범위를 방폐할 수 있도록(듯이) 일반화한다 필요가 있습니다.

truncate() (을)를 사용해 파일을 확장하면(자), 이식성이 없어집니다.

역사
truncate() 함수 호출은, 4.2BSD 그리고 등장했습니다.