aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/sys/write.2
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/sys/write.2')
-rw-r--r--lib/libc/sys/write.2313
1 files changed, 0 insertions, 313 deletions
diff --git a/lib/libc/sys/write.2 b/lib/libc/sys/write.2
deleted file mode 100644
index ce70947c5094..000000000000
--- a/lib/libc/sys/write.2
+++ /dev/null
@@ -1,313 +0,0 @@
-.\" Copyright (c) 1980, 1991, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)write.2 8.5 (Berkeley) 4/2/94
-.\"
-.Dd February 11, 2021
-.Dt WRITE 2
-.Os
-.Sh NAME
-.Nm write ,
-.Nm writev ,
-.Nm pwrite ,
-.Nm pwritev
-.Nd write output
-.Sh LIBRARY
-.Lb libc
-.Sh SYNOPSIS
-.In unistd.h
-.Ft ssize_t
-.Fn write "int fd" "const void *buf" "size_t nbytes"
-.Ft ssize_t
-.Fn pwrite "int fd" "const void *buf" "size_t nbytes" "off_t offset"
-.In sys/uio.h
-.Ft ssize_t
-.Fn writev "int fd" "const struct iovec *iov" "int iovcnt"
-.Ft ssize_t
-.Fn pwritev "int fd" "const struct iovec *iov" "int iovcnt" "off_t offset"
-.Sh DESCRIPTION
-The
-.Fn write
-system call
-attempts to write
-.Fa nbytes
-of data to the object referenced by the descriptor
-.Fa fd
-from the buffer pointed to by
-.Fa buf .
-The
-.Fn writev
-system call
-performs the same action, but gathers the output data
-from the
-.Fa iovcnt
-buffers specified by the members of the
-.Fa iov
-array: iov[0], iov[1], ..., iov[iovcnt\|-\|1].
-The
-.Fn pwrite
-and
-.Fn pwritev
-system calls
-perform the same functions, but write to the specified position in
-the file without modifying the file pointer.
-.Pp
-For
-.Fn writev
-and
-.Fn pwritev ,
-the
-.Fa iovec
-structure is defined as:
-.Pp
-.Bd -literal -offset indent -compact
-struct iovec {
- void *iov_base; /* Base address. */
- size_t iov_len; /* Length. */
-};
-.Ed
-.Pp
-Each
-.Fa iovec
-entry specifies the base address and length of an area
-in memory from which data should be written.
-The
-.Fn writev
-system call
-will always write a complete area before proceeding
-to the next.
-.Pp
-On objects capable of seeking, the
-.Fn write
-starts at a position
-given by the pointer associated with
-.Fa fd ,
-see
-.Xr lseek 2 .
-Upon return from
-.Fn write ,
-the pointer is incremented by the number of bytes which were written.
-.Pp
-Objects that are not capable of seeking always write from the current
-position.
-The value of the pointer associated with such an object
-is undefined.
-.Pp
-If the real user is not the super-user, then
-.Fn write
-clears the set-user-id bit on a file.
-This prevents penetration of system security
-by a user who
-.Dq captures
-a writable set-user-id file
-owned by the super-user.
-.Pp
-When using non-blocking I/O on objects such as sockets that are subject
-to flow control,
-.Fn write
-and
-.Fn writev
-may write fewer bytes than requested;
-the return value must be noted,
-and the remainder of the operation should be retried when possible.
-.Sh RETURN VALUES
-Upon successful completion the number of bytes which were written
-is returned.
-Otherwise a -1 is returned and the global variable
-.Va errno
-is set to indicate the error.
-.Sh ERRORS
-The
-.Fn write ,
-.Fn writev ,
-.Fn pwrite
-and
-.Fn pwritev
-system calls
-will fail and the file pointer will remain unchanged if:
-.Bl -tag -width Er
-.It Bq Er EBADF
-The
-.Fa fd
-argument
-is not a valid descriptor open for writing.
-.It Bq Er EPIPE
-An attempt is made to write to a pipe that is not open
-for reading by any process.
-.It Bq Er EPIPE
-An attempt is made to write to a socket of type
-.Dv SOCK_STREAM
-that is not connected to a peer socket.
-.It Bq Er EFBIG
-An attempt was made to write a file that exceeds the process's
-file size limit or the maximum file size.
-.It Bq Er EFAULT
-Part of
-.Fa iov
-or data to be written to the file
-points outside the process's allocated address space.
-.It Bq Er EINVAL
-The pointer associated with
-.Fa fd
-was negative.
-.It Bq Er ENOSPC
-There is no free space remaining on the file system
-containing the file.
-.It Bq Er EDQUOT
-The user's quota of disk blocks on the file system
-containing the file has been exhausted.
-.It Bq Er EIO
-An I/O error occurred while reading from or writing to the file system.
-.It Bq Er EINTR
-A signal interrupted the write before it could be completed.
-.It Bq Er EAGAIN
-The file was marked for non-blocking I/O,
-and no data could be written immediately.
-.It Bq Er EROFS
-An attempt was made to write over a disk label area at the beginning
-of a slice.
-Use
-.Xr disklabel 8
-.Fl W
-to enable writing on the disk label area.
-.It Bq Er EINVAL
-The value
-.Fa nbytes
-is greater than
-.Dv SSIZE_MAX
-(or greater than
-.Dv INT_MAX ,
-if the sysctl
-.Va debug.iosize_max_clamp
-is non-zero).
-.It Bq Er EINTEGRITY
-The backing store for
-.Fa fd
-detected corrupted data while reading.
-(For example, writing a partial filesystem block may require first reading
-the existing block which may trigger this error.)
-.El
-.Pp
-In addition,
-.Fn writev
-and
-.Fn pwritev
-may return one of the following errors:
-.Bl -tag -width Er
-.It Bq Er EDESTADDRREQ
-The destination is no longer available when writing to a
-.Ux
-domain datagram socket on which
-.Xr connect 2
-had been used to set a destination address.
-.It Bq Er EINVAL
-The
-.Fa iovcnt
-argument
-was less than or equal to 0, or greater than
-.Dv IOV_MAX .
-.It Bq Er EINVAL
-One of the
-.Fa iov_len
-values in the
-.Fa iov
-array was negative.
-.It Bq Er EINVAL
-The sum of the
-.Fa iov_len
-values is greater than
-.Dv SSIZE_MAX
-(or greater than
-.Dv INT_MAX ,
-if the sysctl
-.Va debug.iosize_max_clamp
-is non-zero).
-.It Bq Er ENOBUFS
-The mbuf pool has been completely exhausted when writing to a socket.
-.El
-.Pp
-The
-.Fn pwrite
-and
-.Fn pwritev
-system calls may also return the following errors:
-.Bl -tag -width Er
-.It Bq Er EINVAL
-The
-.Fa offset
-value was negative.
-.It Bq Er ESPIPE
-The file descriptor is associated with a pipe, socket, or FIFO.
-.El
-.Sh SEE ALSO
-.Xr fcntl 2 ,
-.Xr lseek 2 ,
-.Xr open 2 ,
-.Xr pipe 2 ,
-.Xr select 2
-.Sh STANDARDS
-The
-.Fn write
-system call is expected to conform to
-.St -p1003.1-90 .
-The
-.Fn writev
-and
-.Fn pwrite
-system calls are expected to conform to
-.St -xpg4.2 .
-.Sh HISTORY
-The
-.Fn pwritev
-system call appeared in
-.Fx 6.0 .
-The
-.Fn pwrite
-function appeared in
-.At V.4 .
-The
-.Fn writev
-system call appeared in
-.Bx 4.2 .
-The
-.Fn write
-function appeared in
-.At v1 .
-.Sh BUGS
-The
-.Fn pwrite
-system call appends the file without changing the file offset if
-.Dv O_APPEND
-is set, contrary to
-.St -p1003.1-2008
-where
-.Fn pwrite
-writes into
-.Fa offset
-regardless of whether
-.Dv O_APPEND
-is set.