mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-17 12:41:05 +03:00
* lib/unistd.in.h (write): Replace also when GNULIB_UNISTD_H_NONBLOCKING is not 1. * lib/write.c (write_nothrow): New function. (rpl_write): Define also when GNULIB_NONBLOCKING or GNULIB_SIGPIPE is not 1. Use write_nothrow. * m4/write.m4 (gl_FUNC_WRITE): Replace read if the platform has an invalid parameter handler. (gl_PREREQ_WRITE): New macro. * modules/write (Depends-on): Add msvc-inval. (configure.ac): Invoke gl_PREREQ_WRITE. * doc/posix-functions/write.texi: Mention the problem on MSVC.
46 lines
1.5 KiB
Plaintext
46 lines
1.5 KiB
Plaintext
@node write
|
|
@section @code{write}
|
|
@findex write
|
|
|
|
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/write.html}
|
|
|
|
Gnulib module: write, nonblocking, sigpipe
|
|
|
|
Portability problems fixed by Gnulib module @code{stdio}, together with module @code{nonblocking}:
|
|
@itemize
|
|
@item
|
|
This function crashes when invoked with invalid arguments on some platforms:
|
|
MSVC 9.
|
|
@item
|
|
When writing to a non-blocking pipe whose buffer is full, this function fails
|
|
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
|
|
platforms:
|
|
mingw, MSVC 9.
|
|
@item
|
|
When writing to a non-blocking pipe on which no reader is currently waiting
|
|
an amount of bytes that exceeds the pipe buffer's size, then -- even if the
|
|
pipe's buffer is empty -- this function fails, instead of performing a partial
|
|
write into the pipe buffer, on some platforms:
|
|
mingw, MSVC 9.
|
|
@end itemize
|
|
|
|
Portability problems fixed by Gnulib module @code{stdio}, together with module @code{sigpipe}:
|
|
@itemize
|
|
@item
|
|
When writing to a pipe with no readers, this function fails with error
|
|
@code{EINVAL}, instead of obeying the current @code{SIGPIPE} handler, on
|
|
some platforms:
|
|
mingw, MSVC 9.
|
|
@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 X 10.5.
|
|
@end itemize
|
|
|
|
For handling @code{EINTR}, Gnulib provides a module @samp{safe-write} with a
|
|
function @code{safe_write}.
|