Annotation of 43BSDTahoe/man/man2/write.2, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1980 Regents of the University of California.
                      2: .\" All rights reserved.  The Berkeley software License Agreement
                      3: .\" specifies the terms and conditions for redistribution.
                      4: .\"
                      5: .\"    @(#)write.2     6.5 (Berkeley) 5/14/86
                      6: .\"
                      7: .TH WRITE 2 "May 14, 1986"
                      8: .UC 4
                      9: .SH NAME
                     10: write, writev \- write output
                     11: .SH SYNOPSIS
                     12: .nf
                     13: .ft B
                     14: cc = write(d, buf, nbytes)
                     15: int cc, d;
                     16: char *buf;
                     17: int nbytes;
                     18: .PP
                     19: .ft B
                     20: #include <sys/types.h>
                     21: #include <sys/uio.h>
                     22: .PP
                     23: .ft B
                     24: cc = writev(d, iov, iovcnt)
                     25: int cc, d;
                     26: struct iovec *iov;
                     27: int iovcnt;
                     28: .fi
                     29: .SH DESCRIPTION
                     30: .I Write
                     31: attempts to write
                     32: .I nbytes
                     33: of data to the object referenced by the descriptor
                     34: .I d
                     35: from the buffer pointed to by
                     36: .IR buf .
                     37: .I Writev
                     38: performs the same action, but gathers the output data
                     39: from the 
                     40: .I iovcnt
                     41: buffers specified by the members of the
                     42: .I iov
                     43: array: iov[0], iov[1], ..., iov[iovcnt\|\-\|1].
                     44: .PP
                     45: For 
                     46: .IR writev ,
                     47: the 
                     48: .I iovec
                     49: structure is defined as
                     50: .PP
                     51: .nf
                     52: .RS
                     53: .DT
                     54: struct iovec {
                     55:        caddr_t iov_base;
                     56:        int     iov_len;
                     57: };
                     58: .RE
                     59: .fi
                     60: .PP
                     61: Each 
                     62: .I iovec
                     63: entry specifies the base address and length of an area
                     64: in memory from which data should be written.
                     65: .I Writev
                     66: will always write a complete area before proceeding
                     67: to the next.
                     68: .PP
                     69: On objects capable of seeking, the \fIwrite\fP starts at a position
                     70: given by the pointer associated with
                     71: .IR d ,
                     72: see
                     73: .IR lseek (2).
                     74: Upon return from
                     75: .IR write ,
                     76: the pointer is incremented by the number of bytes actually written.
                     77: .PP
                     78: Objects that are not capable of seeking always write from the current
                     79: position.  The value of the pointer associated with such an object
                     80: is undefined.
                     81: .PP
                     82: If the real user is not the super-user, then
                     83: .I write
                     84: clears the set-user-id bit on a file.
                     85: This prevents penetration of system security
                     86: by a user who
                     87: \*(lqcaptures\*(rq a writable set-user-id file
                     88: owned by the super-user.
                     89: .PP
                     90: When using non-blocking I/O on objects such as sockets that are subject
                     91: to flow control,
                     92: .I write
                     93: and
                     94: .I writev
                     95: may write fewer bytes than requested;
                     96: the return value must be noted,
                     97: and the remainder of the operation should be retried when possible.
                     98: .SH "RETURN VALUE
                     99: Upon successful completion the number of bytes actually written
                    100: is returned.  Otherwise a \-1 is returned and the global variable
                    101: .I errno
                    102: is set to indicate the error.
                    103: .SH ERRORS
                    104: .I Write
                    105: and
                    106: .I writev
                    107: will fail and the file pointer will remain unchanged if one or more
                    108: of the following are true:
                    109: .TP 15
                    110: [EBADF]
                    111: \fID\fP is not a valid descriptor open for writing.
                    112: .TP 15
                    113: [EPIPE]
                    114: An attempt is made to write to a pipe that is not open
                    115: for reading by any process.
                    116: .TP 15
                    117: [EPIPE]
                    118: An attempt is made to write to a socket of type SOCK_STREAM
                    119: that is not connected to a peer socket.
                    120: .TP 15
                    121: [EFBIG]
                    122: An attempt was made to write a file that exceeds the process's
                    123: file size limit or the maximum file size.
                    124: .TP 15
                    125: [EFAULT]
                    126: Part of \fIiov\fP or data to be written to the file
                    127: points outside the process's allocated address space.
                    128: .TP 15
                    129: [EINVAL]
                    130: The pointer associated with
                    131: .I d
                    132: was negative.
                    133: .TP 15
                    134: [ENOSPC]
                    135: There is no free space remaining on the file system
                    136: containing the file.
                    137: .TP 15
                    138: [EDQUOT]
                    139: The user's quota of disk blocks on the file system
                    140: containing the file has been exhausted.
                    141: .TP 15
                    142: [EIO]
                    143: An I/O error occurred while reading from or writing to the file system.
                    144: .TP 15
                    145: [EWOULDBLOCK]
                    146: The file was marked for non-blocking I/O,
                    147: and no data could be written immediately.
                    148: .PP
                    149: In addition, 
                    150: .I writev
                    151: may return one of the following errors:
                    152: .TP 15
                    153: [EINVAL]
                    154: .I Iovcnt
                    155: was less than or equal to 0, or greater than 16.
                    156: .TP 15
                    157: [EINVAL]
                    158: One of the
                    159: .I iov_len
                    160: values in the
                    161: .I iov
                    162: array was negative.
                    163: .TP 15
                    164: [EINVAL]
                    165: The sum of the
                    166: .I iov_len
                    167: values in the
                    168: .I iov
                    169: array overflowed a 32-bit integer.
                    170: .SH "SEE ALSO"
                    171: fcntl(2), lseek(2), open(2), pipe(2), select(2)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.