fclose, _fcloseall

ストリームを閉じるか (fclose)、またはすべての開いているストリームを閉じます (_fcloseall)。

構文

int fclose(
   FILE *stream
);
int _fcloseall( void );

パラメーター

stream
FILE 構造体へのポインター。

戻り値

ストリームが正常に閉じられた場合、fclose は 0 を返します。 _fcloseall は、閉じられたストリームの総数を返します。 どちらの関数もエラーを示す EOF を返します。

解説

fclose 関数は、stream を閉じます。 有効な場合streamNULL、「パラメーターの検証」の説明に従って、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、fcloseerrnoEINVAL に設定し、EOF を返します。 この関数を呼び出す前に、常にポインターをstreamチェックすることをお勧めします。

リターン コードの詳細については、「errno_doserrno_sys_errlist、および _sys_nerr」を参照してください。

_fcloseall 関数は、stdinstdout、および stderr (MS-DOS では、_stdaux_stdprn も) を除くすべての開いているストリームを閉じます。 また、tmpfile によって作成された一時ファイルも閉じて削除します。 両方の関数では、終了する前に、ストリームに関連付けられているすべてのバッファーがフラッシュされます。 システムによって割り当てられたバッファーについては、ストリームを閉じる際に解放します。 setbufsetvbuf を使用してユーザーが割り当てたバッファーは、自動的に解放されません。

Note

ストリームを閉じるときに関数_fcloseallを使用するとfclose、基になるファイル記述子と 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