write
=====

POSIX specification:
 https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html

Gnulib module: write, nonblocking, sigpipe

Portability problems fixed by Gnulib module write:

  * This function is declared in a different header file (namely, <io.h>) on some platforms: mingw, MSVC 14.

  * This function crashes when invoked with invalid arguments on some platforms: MSVC 14.

Portability problems fixed by Gnulib module stdio, together with module nonblocking:

  * When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14.

  * 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.

Portability problems fixed by Gnulib module stdio, together with module sigpipe:

  * When writing to a pipe with no readers, this function fails with error EINVAL, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

  * This function may fail with error EINTR, even in programs that don't install any signal handlers, on some platforms: macOS 11.1.

For handling EINTR, Gnulib provides a module safe-write with a function safe_write.