.\" Copyright (c) 2006 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.TH FCLOSEALL 3  2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
fcloseall \- close all open streams
.SH SYNOPSIS
.nf
.BR "#define _GNU_SOURCE" "         /* See feature_test_macros(7) */"
.B #include <stdio.h>
.PP
.B int fcloseall(void);
.fi
.SH DESCRIPTION
The
.BR fcloseall ()
function closes all of the calling process's open streams.
Buffered output for each stream is written before it is closed
(as for
.BR fflush (3));
buffered input is discarded.
.PP
The standard streams,
.IR stdin ,
.IR stdout ,
and
.I stderr
are also closed.
.SH RETURN VALUE
This function returns 0 if all files were successfully closed;
on error,
.B EOF
is returned.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR fcloseall ()
T}	Thread safety	MT-Unsafe race:streams
.TE
.hy
.ad
.sp 1
.PP
The
.BR fcloseall ()
function does not lock the streams, so it is not thread-safe.
.SH CONFORMING TO
This function is a GNU extension.
.SH SEE ALSO
.BR close (2),
.BR fclose (3),
.BR fflush (3),
.BR fopen (3),
.BR setbuf (3)
