summaryrefslogtreecommitdiff
path: root/doc/posix-functions/read.texi
blob: c872a2ab5a1637625c3e103361aa4fe6f5739cd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@node read
@section @code{read}
@findex read

POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html}

Gnulib module: read, stdio, nonblocking

Portability problems fixed by Gnulib module @code{read}:
@itemize
@item
This function is declared in a different header file (namely, @code{<io.h>})
on some platforms:
mingw, MSVC 14.
@item
This function crashes when invoked with invalid arguments on some platforms:
MSVC 14.
@end itemize

Portability problems fixed by Gnulib module @code{stdio}, together with module @code{nonblocking}:
@itemize
@item
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
mingw, MSVC 14.
@end itemize

Portability problems not fixed by Gnulib:
@itemize
@item
This function may fail with error @code{EINTR}, even in programs that don't
install any signal handlers, on some platforms:
macOS 11.1.
@end itemize

For handling @code{EINTR}, Gnulib provides a module @samp{safe-read} with a
function @code{safe_read}.