Share via


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」の例を参照してください。

.NET Framework の相当するアイテム

参照

参照

ストリーム入出力

_close

_fdopen、_wfdopen

fflush

fopen、_wfopen

freopen、_wfreopen