spawn-pipe: Allow caller to specify directory for the subprocess.
[gnulib.git] / doc / posix-functions / write.texi
blob140769a97cf1a842f71239b61bf538740e36c833
1 @node write
2 @section @code{write}
3 @findex write
5 POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html}
7 Gnulib module: write, nonblocking, sigpipe
9 Portability problems fixed by Gnulib module @code{write}:
10 @itemize
11 @item
12 This function is declared in a different header file (namely, @code{<io.h>})
13 on some platforms:
14 mingw, MSVC 14.
15 @item
16 This function crashes when invoked with invalid arguments on some platforms:
17 MSVC 14.
18 @end itemize
20 Portability problems fixed by Gnulib module @code{stdio}, together with module @code{nonblocking}:
21 @itemize
22 @item
23 When writing to a non-blocking pipe whose buffer is full, this function fails
24 with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
25 platforms:
26 mingw, MSVC 14.
27 @item
28 When writing to a non-blocking pipe on which no reader is currently waiting
29 an amount of bytes that exceeds the pipe buffer's size, then---even if the
30 pipe's buffer is empty---this function fails, instead of performing a partial
31 write into the pipe buffer, on some platforms:
32 mingw, MSVC 14.
33 @end itemize
35 Portability problems fixed by Gnulib module @code{stdio}, together with module @code{sigpipe}:
36 @itemize
37 @item
38 When writing to a pipe with no readers, this function fails with error
39 @code{EINVAL}, instead of obeying the current @code{SIGPIPE} handler, on
40 some platforms:
41 mingw, MSVC 14.
42 @end itemize
44 Portability problems not fixed by Gnulib:
45 @itemize
46 @item
47 This function may fail with error @code{EINTR}, even in programs that don't
48 install any signal handlers, on some platforms:
49 Mac OS X 10.13.
50 @end itemize
52 For handling @code{EINTR}, Gnulib provides a module @samp{safe-write} with a
53 function @code{safe_write}.