fclose、_fcloseall
更新 : 2007 年 11 月
fclose はストリームを閉じ、_fcloseall は開いているストリームをすべて閉じます。
int fclose(
FILE *stream
);
int _fcloseall( void );
パラメータ
- stream
FILE 構造体へのポインタ。
戻り値
ストリームが正常に閉じられた場合、fclose は 0 を返します。_fcloseall は、閉じられたストリームの総数を返します。いずれの関数も、エラーが発生したときは EOF を返します。
解説
fclose 関数は stream を閉じます。stream が NULL の場合は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。実行の継続が許可された場合、fclose は EOF を返し、errno を EINVAL に設定します。この関数を呼び出す前に、必ず stream ポインタをチェックしてください。
エラー コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
_fcloseall は、stdin、stdout、stderr (MS-DOS では _stdaux と _stdprn) を除くすべての開いているストリームを閉じます。_fcloseall は、tmpfile で作成された一時ファイルもすべて閉じて削除します。いずれの関数もストリームに関連付けられているバッファをすべてフラッシュしてから、ストリームを閉じます。システムによって割り当てられたバッファは、ストリームを閉じるときに解放されます。ユーザーが setbuf および setvbuf によって割り当てたバッファは、自動的には解放されません。
メモ : これらの関数を使用してストリームを閉じる場合、ストリームと共に基になるファイル記述子とオペレーティング システムのファイル ハンドル (またはソケット) も閉じられます。したがって、ファイル ハンドルまたはファイル記述子として開いたファイルを fclose を使用して閉じる場合、_close を呼び出してファイル記述子を閉じたり、Win32 CloseHandle 関数を呼び出してファイル ハンドルを閉じたり、closesocket を呼び出してソケットを閉じたりしないでください。
fclose と _fcloseall には、他のスレッドのアクセスを抑止するためのコードが含まれます。fclose のロックしないバージョンについては、「_fclose_nolock」を参照してください。
必要条件
関数 |
必須ヘッダー |
---|---|
fclose |
<stdio.h> |
_fcloseall |
<stdio.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
「fopen」の例を参照してください。