fclose
, _fcloseall
ストリームを閉じるか (fclose
)、またはすべての開いているストリームを閉じます (_fcloseall
)。
構文
int fclose(
FILE *stream
);
int _fcloseall( void );
パラメーター
stream
FILE
構造体へのポインター。
戻り値
ストリームが正常に閉じられた場合、fclose
は 0 を返します。 _fcloseall
は、閉じられたストリームの総数を返します。 どちらの関数もエラーを示す EOF
を返します。
解説
fclose
関数は、stream
を閉じます。 stream
が NULL
の場合は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、fclose
は errno
を EINVAL
に設定し、EOF
を返します。 この関数を呼び出す前に、常に stream
ポインターを確認することをお勧めします。
リターン コードの詳細については、「errno
、_doserrno
、_sys_errlist
、および _sys_nerr
」を参照してください。
_fcloseall
関数は、stdin
、stdout
、および stderr
(MS-DOS では、_stdaux
と_stdprn
も) を除くすべての開いているストリームを閉じます。 また、tmpfile
によって作成された一時ファイルも閉じて削除します。 両方の関数では、終了する前に、ストリームに関連付けられているすべてのバッファーがフラッシュされます。 システムによって割り当てられたバッファーについては、ストリームを閉じる際に解放します。 setbuf
と setvbuf
を使用してユーザーが割り当てたバッファーは、自動的に解放されません。
Note
fclose
または_fcloseall
関数を使用してストリームを閉じると、基になるファイル記述子と OS ファイル ハンドル (またはソケット) も閉じられます。 したがって、ファイルが最初にファイル ハンドルまたはファイル記述子として開き、 fclose
で閉じられている場合は、 _close
を呼び出してファイル記述子を閉じないでください。また、ファイル ハンドルを閉じるには Win32 関数 CloseHandle
を呼び出さないでください。
fclose
と _fcloseall
には、他のスレッドからの干渉に対処するコードが含まれています。 _fclose_nolock
のロックしないバージョンについては、「fclose
」を参照してください。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
要件
機能 | 必須ヘッダー |
---|---|
fclose |
<stdio.h> |
_fcloseall |
<stdio.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
fopen
の例を参照してください。
関連項目
ストリーム入出力
_close
_fdopen
, _wfdopen
fflush
fopen
, _wfopen
freopen
, _wfreopen