_chsize
파일 크기를 변경합니다. 보다 안전한 버전을 사용할 수 있습니다. 를 참조하세요 _chsize_s
.
구문
int _chsize(
int fd,
long size
);
매개 변수
fd
열려 있는 파일을 참조하는 파일 설명자입니다.
size
파일의 새 길이(바이트)입니다.
반환 값
파일 크기가 제대로 변경되면 _chsize
는 값 0을 반환합니다. 반환 값 -1은 오류를 errno
나타냅니다. 지정된 파일이 읽기 전용이거나 지정된 파일이 액세스에 대해 잠겨 있는 경우, 설명자가 유효하지 않은 경우, EBADF
ENOSPC
디바이스 EINVAL
에 공간이 남아 있지 않거나 0보다 작은 경우 size
로 설정 EACCES
됩니다.
반환 코드에 대한 자세한 내용은 , , 및 를 참조하세요errno
._sys_nerr
_sys_errlist
_doserrno
설명
_chsize
함수는 fd
와 연결된 파일을 size
로 지정된 길이까지 확장하거나 자릅니다. 파일은 쓰기를 허용하는 모드로 열려 있어야 합니다. 파일이 확장되는 경우 Null 문자('\0')가 추가됩니다. 파일이 잘린 경우 짧아진 파일의 끝부터 파일의 원래 길이까지의 모든 데이터가 손실됩니다.
이 함수는 해당 매개 변수의 유효성을 검사합니다. 0보다 작거나 fd
잘못된 파일 설명자인 경우 size
매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
요구 사항
루틴에서 반환된 값 | 필수 헤더 | 선택적 헤더 |
---|---|---|
_chsize |
<io.h> | <errno.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
// crt_chsize.c
// This program uses _filelength to report the size
// of a file before and after modifying it with _chsize.
#include <io.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <share.h>
int main( void )
{
int fh, result;
unsigned int nbytes = BUFSIZ;
// Open a file
if( _sopen_s( &fh, "data", _O_RDWR | _O_CREAT, _SH_DENYNO,
_S_IREAD | _S_IWRITE ) == 0 )
{
printf( "File length before: %ld\n", _filelength( fh ) );
if( ( result = _chsize( fh, 329678 ) ) == 0 )
printf( "Size successfully changed\n" );
else
printf( "Problem in changing the size\n" );
printf( "File length after: %ld\n", _filelength( fh ) );
_close( fh );
}
}
File length before: 0
Size successfully changed
File length after: 329678