Open System Services System Calls Reference Manual (G06.25+, H06.03+)

writev(2) OSS System Calls Reference Manual
NAME
writev - Writes to a le from scattered buffers
LIBRARY
G-series native OSS processes: /G/system/sysnn/zossesrl
H-series OSS processes: /G/system/zdllnnn/zossedll
SYNOPSIS
#include <sys/types.h>
#include <sys/uio.h>
int writev(
int ledes,
struct iovec *iov,
int iov_count);
PARAMETERS
filedes Species an open le descriptor obtained from a successful call to the accept(),
creat(), dup( ), dup2( ), fcntl( ), open(), pipe( ), socket(),orsocketpair() func-
tion.
iov Points to a iovec structure that identies the buffers containing the data to be
written.
iov_count Species the number of iovec structure entries (buffers) pointed to by the iov
parameter.
DESCRIPTION
The writev() function attempts to write data to the le associated with the ledes parameter from
the set of buffers pointed to by the iov parameter.
The writev() function performs the same action as the write() function, but gathers the output
data from the iov_count buffers specied by the iovec structure buffers pointed to by the iov
parameter.
The iovec structure is dened in the sys/uoi.h header le and contains entries with these
members:
caddr_t iov_base;
int iov_len;
The iov_base and iov_len members of each iovec structure entry specify the base address and
length of an area in memory from which data should be written. The writev() function always
writes a complete buffer before proceeding to the next.
With regular les and devices capable of seeking, the actual writing of data proceeds from the
position in the le indicated by the le pointer. If this incremented le pointer is greater than the
length of the le, the length of the le is set to this le offset. Upon return from the writev()
function, the le pointer is incremented by the number of bytes actually written.
With devices incapable of seeking, writing always takes place starting at the current position.
For such devices, the value of the le pointer after a call to the writev() function is always 0
(zero).
Fewer bytes than requested can be written if there is not enough room to satisfy the request. In
this case, the number of bytes written is returned. For example, suppose there is space for 20
bytes more in a le before reaching a limit. A write request of 512 bytes returns a value of 20.
The limit reached can be either the end of the physical medium or the value that has been set by
the ulimit() function. The next write of a nonzero number of bytes gives a failure return (except
as noted later).
1018 Hewlett-Packard Company 527186-003