VMS Help
CRTL, writev
*Conan The Librarian
|
Writes to a file.
Format
#include <uio.h>
ssize_t writev (int file_desc, const struct iovec *iov, int
iovcnt);
ssize_t __writev64 (int file_desc, const struct
__iovec64 *iov, int iovcnt);
(Integrity servers, Alpha)
The writev function has variants named _writev32 and __writev64
for use with 32-bit and 64-bit pointer sizes, respectively.
file_desc
A file descriptor that refers to a file currently opened for
writing or updating.
iov
Array of iovec structures from which the output data is gathered.
iovcnt
The number of buffers specified by the members of the iov array.
The writev function is equivalent to write but gathers the output
data from the iovcnt buffers specified by the members of the iov
array: iov[0], iov[1], ..., iov[iovcnt-1]. The iovcnt argument
is valid if greater than 0 and less than or equal to {IOV_MAX},
defined in <limits.h>.
Each iovec entry specifies the base address and length of an area
in memory from which data should be written. The writev function
writes a complete area before proceeding to the next.
If filedes refers to a regular file and all of the iov_len
members in the array pointed to by iov are 0, writev returns 0
and has no other effect.
For other file types, the behavior is unspecified.
If the sum of the iov_len values is greater than SSIZE_MAX, the
operation fails and no data is transferred.
Upon successful completion, writev returns the number of bytes
actually written. Otherwise, it returns a value of -1, the file
pointer remains unchanged, and errno is set to indicate an error.
x The number of bytes written.
-1 Indicates an error. The file times do not
change, and the function sets errno to one of
the following values:
o EBADF - The file_desc argument is not a
valid file descriptor open for writing.
o EINTR - The write operation was terminated
due to the receipt of a signal, and no data
was transferred.
o EINVAL - The sum of the iov_len values in
the iov array would overflow an ssize_t, or
the iovcnt argument was less than or equal
to 0, or greater than {IOV_MAX}.
o EIO - A physical I/O error has occurred.
o ENOSPC - There was no free space remaining
on the device containing the file.
o EPIPE - An attempt is made to write to a
pipe or FIFO that is not open for reading
by any process, or that only has one end
open. A SIGPIPE signal will also be sent to
the thread.