次の方法で共有


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

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