summaryrefslogtreecommitdiffstats
path: root/man-pages-posix-2017/man3p/writev.3p
diff options
context:
space:
mode:
Diffstat (limited to 'man-pages-posix-2017/man3p/writev.3p')
-rw-r--r--man-pages-posix-2017/man3p/writev.3p171
1 files changed, 171 insertions, 0 deletions
diff --git a/man-pages-posix-2017/man3p/writev.3p b/man-pages-posix-2017/man3p/writev.3p
new file mode 100644
index 0000000..45fc3e5
--- /dev/null
+++ b/man-pages-posix-2017/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 .