summaryrefslogtreecommitdiffstats
path: root/man3/fread.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/fread.3')
-rw-r--r--man3/fread.3165
1 files changed, 165 insertions, 0 deletions
diff --git a/man3/fread.3 b/man3/fread.3
new file mode 100644
index 0000000..2874d43
--- /dev/null
+++ b/man3/fread.3
@@ -0,0 +1,165 @@
+'\" t
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" and Copyright (c) 2020 Arkadiusz Drabczyk <arkadiusz@drabczyk.org>
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" SPDX-License-Identifier: BSD-4-Clause-UC
+.\"
+.\" @(#)fread.3 6.6 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 15:37:33 1993, faith@cs.unc.edu
+.\" Sun Feb 19 21:26:54 1995 by faith, return values
+.\" Modified Thu Apr 20 20:43:53 1995 by Jim Van Zandt <jrv@vanzandt.mv.com>
+.\" Modified Fri May 17 10:21:51 1996 by Martin Schulze <joey@infodrom.north.de>
+.\"
+.TH fread 3 2023-07-20 "Linux man-pages 6.05.01"
+.SH NAME
+fread, fwrite \- binary stream input/output
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <stdio.h>
+.PP
+.BI "size_t fread(void " ptr "[restrict ." size " * ." nmemb ],
+.BI " size_t " size ", size_t " nmemb ,
+.BI " FILE *restrict " stream );
+.BI "size_t fwrite(const void " ptr "[restrict ." size " * ." nmemb ],
+.BI " size_t " size ", size_t " nmemb ,
+.BI " FILE *restrict " stream );
+.fi
+.SH DESCRIPTION
+The function
+.BR fread ()
+reads
+.I nmemb
+items of data, each
+.I size
+bytes long, from the stream pointed to by
+.IR stream ,
+storing them at the location given by
+.IR ptr .
+.PP
+The function
+.BR fwrite ()
+writes
+.I nmemb
+items of data, each
+.I size
+bytes long, to the stream pointed to by
+.IR stream ,
+obtaining them from the location given by
+.IR ptr .
+.PP
+For nonlocking counterparts, see
+.BR unlocked_stdio (3).
+.SH RETURN VALUE
+On success,
+.BR fread ()
+and
+.BR fwrite ()
+return the number of items read or written.
+This number equals the number of bytes transferred only when
+.I size
+is 1.
+If an error occurs, or the end of the file is reached,
+the return value is a short item count (or zero).
+.PP
+The file position indicator for the stream is advanced by the number
+of bytes successfully read or written.
+.PP
+.BR fread ()
+does not distinguish between end-of-file and error, and callers must use
+.BR feof (3)
+and
+.BR ferror (3)
+to determine which occurred.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR fread (),
+.BR fwrite ()
+T} Thread safety MT-Safe
+.TE
+.sp 1
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89.
+.SH EXAMPLES
+The program below demonstrates the use of
+.BR fread ()
+by parsing /bin/sh ELF executable in binary mode and printing its
+magic and class:
+.PP
+.in +4n
+.EX
+$ \fB./a.out\fP
+ELF magic: 0x7f454c46
+Class: 0x02
+.EE
+.in
+.SS Program source
+\&
+.\" SRC BEGIN (fread.c)
+.EX
+#include <stdio.h>
+#include <stdlib.h>
+\&
+#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
+\&
+int
+main(void)
+{
+ FILE *fp;
+ size_t ret;
+ unsigned char buffer[4];
+\&
+ fp = fopen("/bin/sh", "rb");
+ if (!fp) {
+ perror("fopen");
+ return EXIT_FAILURE;
+ }
+\&
+ ret = fread(buffer, sizeof(*buffer), ARRAY_SIZE(buffer), fp);
+ if (ret != ARRAY_SIZE(buffer)) {
+ fprintf(stderr, "fread() failed: %zu\en", ret);
+ exit(EXIT_FAILURE);
+ }
+\&
+ printf("ELF magic: %#04x%02x%02x%02x\en", buffer[0], buffer[1],
+ buffer[2], buffer[3]);
+\&
+ ret = fread(buffer, 1, 1, fp);
+ if (ret != 1) {
+ fprintf(stderr, "fread() failed: %zu\en", ret);
+ exit(EXIT_FAILURE);
+ }
+\&
+ printf("Class: %#04x\en", buffer[0]);
+\&
+ fclose(fp);
+\&
+ exit(EXIT_SUCCESS);
+}
+.EE
+.\" SRC END
+.SH SEE ALSO
+.BR read (2),
+.BR write (2),
+.BR feof (3),
+.BR ferror (3),
+.BR unlocked_stdio (3)