| @node write | |
| @subsection @code{write} | |
| @findex write | |
| POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9799919799/functions/write.html} | |
| Gnulib module: write, nonblocking, sigpipe | |
| @mindex write | |
| @mindex nonblocking | |
| @mindex sigpipe | |
| Portability problems fixed by Gnulib module @code{write}: | |
| @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-h}, together with module @code{nonblocking}: | |
| @itemize | |
| @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 14. | |
| @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 14. | |
| @end itemize | |
| Portability problems fixed by Gnulib module @code{stdio-h}, 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 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 14. | |
| @end itemize | |
| @mindex safe-write | |
| For handling @code{EINTR}, Gnulib provides a module @samp{safe-write} with a | |
| function @code{safe_write}. |