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

同等の .NET Framework 関数

参照

参照

ストリーム入出力

_close

_fdopen、_wfdopen

fflush

fopen、_wfopen

freopen、_wfreopen