@node write @section @code{write} @findex write POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html} Gnulib module: write, nonblocking, sigpipe Portability problems fixed by Gnulib module @code{write}: @itemize @item This function is declared in a different header file (namely, @code{}) 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 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}, 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 11.1. @end itemize For handling @code{EINTR}, Gnulib provides a module @samp{safe-write} with a function @code{safe_write}.