fclose、_fcloseallfclose, _fcloseall

ストリーム (fclose) を閉じるか、すべての開いているストリーム ( _fcloseall) を閉じます。Closes a stream (fclose) or closes all open streams (_fcloseall).


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


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.


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関数は、 stdinstdoutstderr (および、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.


関数Function 必須ヘッダーRequired header
fclosefclose <stdio.h><stdio.h>
_fcloseall_fcloseall <stdio.h><stdio.h>

互換性の詳細については、「互換性」を参照してください。For additional compatibility information, see Compatibility.


fopen」の例を参照してください。See the example for fopen.

関連項目See also

ストリーム入出力Stream I/O
_fdopen、_wfdopen_fdopen, _wfdopen
fopen、_wfopenfopen, _wfopen
freopen、_wfreopenfreopen, _wfreopen