diff options
Diffstat (limited to 'upstream/archlinux/man3p/writev.3p')
-rw-r--r-- | upstream/archlinux/man3p/writev.3p | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/upstream/archlinux/man3p/writev.3p b/upstream/archlinux/man3p/writev.3p new file mode 100644 index 00000000..45fc3e57 --- /dev/null +++ b/upstream/archlinux/man3p/writev.3p @@ -0,0 +1,171 @@ +'\" et +.TH WRITEV "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual" +.\" +.SH PROLOG +This manual page is part of the POSIX Programmer's Manual. +The Linux implementation of this interface may differ (consult +the corresponding Linux manual page for details of Linux behavior), +or the interface may not be implemented on Linux. +.\" +.SH NAME +writev +\(em write a vector +.SH SYNOPSIS +.LP +.nf +#include <sys/uio.h> +.P +ssize_t writev(int \fIfildes\fP, const struct iovec *\fIiov\fP, int \fIiovcnt\fP); +.fi +.SH DESCRIPTION +The +\fIwritev\fR() +function shall be equivalent to +\fIwrite\fR(), +except as described below. The +\fIwritev\fR() +function shall gather output data from the +.IR iovcnt +buffers specified by the members of the +.IR iov +array: +.IR iov [0], +.IR iov [1], +\&.\|.\|., \fIiov\fR[\fIiovcnt\fR\-1]. +The +.IR iovcnt +argument is valid if greater than 0 and less than or equal to +{IOV_MAX}, +as defined in +.IR <limits.h> . +.P +Each +.IR iovec +entry specifies the base address and length of an area in memory from +which data should be written. The +\fIwritev\fR() +function shall always write a complete area before proceeding to the +next. +.P +If +.IR fildes +refers to a regular file and all of the +.IR iov_len +members in the array pointed to by +.IR iov +are 0, +\fIwritev\fR() +shall return 0 and have no other effect. For other file types, the +behavior is unspecified. +.P +If the sum of the +.IR iov_len +values is greater than +{SSIZE_MAX}, +the operation shall fail and no data shall be transferred. +.SH "RETURN VALUE" +Upon successful completion, +\fIwritev\fR() +shall return the number of bytes actually written. Otherwise, it shall +return a value of \-1, the file-pointer shall remain unchanged, and +.IR errno +shall be set to indicate an error. +.SH ERRORS +Refer to +.IR "\fIwrite\fR\^(\|)". +.P +In addition, the +\fIwritev\fR() +function shall fail if: +.TP +.BR EINVAL +The sum of the +.IR iov_len +values in the +.IR iov +array would overflow an +.BR ssize_t . +.P +The +\fIwritev\fR() +function may fail and set +.IR errno +to: +.TP +.BR EINVAL +The +.IR iovcnt +argument was less than or equal to 0, or greater than +{IOV_MAX}. +.LP +.IR "The following sections are informative." +.SH EXAMPLES +.SS "Writing Data from an Array" +.P +The following example writes data from the buffers specified by members +of the +.IR iov +array to the file associated with the file descriptor +.IR fd . +.sp +.RS 4 +.nf + +#include <sys/types.h> +#include <sys/uio.h> +#include <unistd.h> +\&... +ssize_t bytes_written; +int fd; +char *buf0 = "short string\en"; +char *buf1 = "This is a longer string\en"; +char *buf2 = "This is the longest string in this example\en"; +int iovcnt; +struct iovec iov[3]; +.P +iov[0].iov_base = buf0; +iov[0].iov_len = strlen(buf0); +iov[1].iov_base = buf1; +iov[1].iov_len = strlen(buf1); +iov[2].iov_base = buf2; +iov[2].iov_len = strlen(buf2); +\&... +iovcnt = sizeof(iov) / sizeof(struct iovec); +.P +bytes_written = writev(fd, iov, iovcnt); +\&... +.fi +.P +.RE +.SH "APPLICATION USAGE" +None. +.SH RATIONALE +Refer to +.IR "\fIwrite\fR\^(\|)". +.SH "FUTURE DIRECTIONS" +None. +.SH "SEE ALSO" +.IR "\fIreadv\fR\^(\|)", +.IR "\fIwrite\fR\^(\|)" +.P +The Base Definitions volume of POSIX.1\(hy2017, +.IR "\fB<limits.h>\fP", +.IR "\fB<sys_uio.h>\fP" +.\" +.SH COPYRIGHT +Portions of this text are reprinted and reproduced in electronic form +from IEEE Std 1003.1-2017, Standard for Information Technology +-- Portable Operating System Interface (POSIX), The Open Group Base +Specifications Issue 7, 2018 Edition, +Copyright (C) 2018 by the Institute of +Electrical and Electronics Engineers, Inc and The Open Group. +In the event of any discrepancy between this version and the original IEEE and +The Open Group Standard, the original IEEE and The Open Group Standard +is the referee document. The original Standard can be obtained online at +http://www.opengroup.org/unix/online.html . +.PP +Any typographical or formatting errors that appear +in this page are most likely +to have been introduced during the conversion of the source files to +man page format. To report such errors, see +https://www.kernel.org/doc/man-pages/reporting_bugs.html . |