fclose、_fcloseall
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 によって割り当てたバッファーは、自動的には解放されません。
**注:**これらの関数は、ストリームを閉じるに使用すると、基になるファイル記述子および OS ファイル ハンドル (またはソケット)、ストリームだけでなく、閉まります。 したがって、ファイル ハンドルまたはファイル記述子として開いたファイルを fclose を使用して閉じる場合、_close を呼び出してファイル記述子を閉じたり、Win32 CloseHandle 関数を呼び出してファイル ハンドルを閉じたり、closesocket を呼び出してソケットを閉じたりしないでください。
fclose と _fcloseall には、他のスレッドのアクセスを抑止するためのコードが含まれます。 fclose のロックしないバージョンについては、「_fclose_nolock」を参照してください。
必要条件
機能 |
必須ヘッダー |
---|---|
fclose |
<stdio.h> |
_fcloseall |
<stdio.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
「fopen」の例を参照してください。