fclose, _fcloseallfclose, _fcloseall

스트림을 닫거나 (fclose) 열려 있는 모든 스트림 (_fcloseall)을 닫습니다.Closes a stream (fclose) or closes all open streams (_fcloseall).

구문Syntax

int fclose(
   FILE *stream
);
int _fcloseall( void );

매개 변수Parameters

스트림stream
FILE 구조체에 대한 포인터입니다.Pointer to FILE structure.

반환 값Return Value

스트림이 성공적으로 닫히면 fclose 는 0을 반환 합니다.fclose returns 0 if the stream is successfully closed. _fcloseall 는 닫힌 스트림의 총 수를 반환 합니다._fcloseall returns the total number of streams closed. 두 함수는 모두 EOF 를 반환 하 여 오류를 표시 합니다.Both functions return EOF to indicate an error.

설명Remarks

Fclose 함수는 스트림을 닫습니다.The fclose function closes stream. StreamNULL 인 경우 매개 변수 유효성 검사에 설명 된 대로 잘못 된 매개 변수 처리기가 호출 됩니다.If stream is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. 계속 해 서 실행 하도록 허용한 경우 fcloseerrnoEINVAL 로 설정 하 고 EOF 를 반환 합니다.If execution is allowed to continue, fclose sets errno to EINVAL and returns EOF. 이 함수를 호출 하기 전에 항상 스트림 포인터를 확인 하는 것이 좋습니다.It is recommended that the stream pointer always be checked prior to calling this function.

이러한 오류 코드 및 기타 오류 코드에 대한 자세한 내용은 _doserrno, errno, _sys_errlist 및 _sys_nerr를 참조하세요.See _doserrno, errno, _sys_errlist, and _sys_nerr for more information on these, and other, error codes.

_Fcloseall 함수는 stdin, stdout, stderr (그리고 MS-DOS, _stdaux_stdprn)를 제외 하 고 열려 있는 모든 스트림을 닫습니다.The _fcloseall function closes all open streams except stdin, stdout, stderr (and, in MS-DOS, _stdaux and _stdprn). 또한 tmpfile 에서 만든 임시 파일도 닫고 삭제 합니다.It also closes and deletes any temporary files created by tmpfile. 두 함수에서 모두 스트림과 연결된 모든 버퍼가 플러시된 후 닫힙니다.In both functions, all buffers associated with the stream are flushed prior to closing. 시스템 할당 버퍼는 스트림이 닫힐 때 해제됩니다.System-allocated buffers are released when the stream is closed. Setbufsetvbuf 를 사용 하 여 사용자가 할당 한 버퍼는 자동으로 해제 되지 않습니다.Buffers assigned by the user with setbuf and setvbuf are not automatically released.

참고: 이러한 함수를 사용하여 스트림을 닫으면 기본 파일 설명자와 OS 파일 핸들(또는 소켓)이 닫히고 스트림도 닫힙니다.Note: When these functions are used to close a stream, the underlying file descriptor and OS file handle (or socket) are closed, as well as the stream. 따라서 파일이 원래 파일 핸들 또는 파일 설명자로 열리고 fclose 를 사용 하 여 닫힌 경우에는 _close 를 호출 하 여 파일 설명자를 닫아야 합니다. Win32 함수 CloseHandle 을 호출 하 여 파일 핸들을 닫아야 합니다.Thus, if the file was originally opened as a file handle or file descriptor and is closed with fclose, do not also call _close to close the file descriptor; do not call the Win32 function CloseHandle to close the file handle.

fclose_fcloseall 에는 다른 스레드의 간섭 으로부터 보호 하는 코드가 포함 되어 있습니다.fclose and _fcloseall include code to protect against interference from other threads. Fclose 의 잠기지 않은 버전은 _fclose_nolock 를 참조 하세요.For non-locking version of a fclose, see _fclose_nolock.

기본적으로이 함수의 전역 상태는 응용 프로그램으로 범위가 지정 됩니다.By default, this function's global state is scoped to the application. 이를 변경 하려면 CRT의 전역 상태를 참조 하세요.To change this, see Global state in the CRT.

요구 사항Requirements

함수Function 필수 헤더Required header
fclosefclose <stdio.h>
_fcloseall_fcloseall <stdio.h>

호환성에 대한 자세한 내용은 Compatibility을 참조하세요.For additional compatibility information, see Compatibility.

예제Example

fopen의 예제를 참조하세요.See the example for fopen.

참고 항목See also

스트림 I/OStream I/O
_close_close
_fdopen, _wfdopen_fdopen, _wfdopen
fflushfflush
fopen, _wfopenfopen, _wfopen
freopen, _wfreopenfreopen, _wfreopen