|
|
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: .\" @(#)read.2 6.6 (Berkeley) 5/23/86 ! 6: .\" ! 7: .TH READ 2 "May 23, 1986" ! 8: .UC 4 ! 9: .SH NAME ! 10: read, readv \- read input ! 11: .SH SYNOPSIS ! 12: .nf ! 13: .ft B ! 14: cc = read(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 = readv(d, iov, iovcnt) ! 25: int cc, d; ! 26: struct iovec *iov; ! 27: int iovcnt; ! 28: .fi ! 29: .SH DESCRIPTION ! 30: .I Read ! 31: attempts to read ! 32: .I nbytes ! 33: of data from the object referenced by the descriptor ! 34: .I d ! 35: into the buffer pointed to by ! 36: .IR buf . ! 37: .I Readv ! 38: performs the same action, but scatters the input data ! 39: into 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 readv , ! 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 where data should be placed. ! 65: .I Readv ! 66: will always fill an area completely before proceeding ! 67: to the next. ! 68: .PP ! 69: On objects capable of seeking, the ! 70: .I read ! 71: starts at a position ! 72: given by the pointer associated with ! 73: .IR d ! 74: (see ! 75: .IR lseek (2)). ! 76: Upon return from ! 77: .IR read , ! 78: the pointer is incremented by the number of bytes actually read. ! 79: .PP ! 80: Objects that are not capable of seeking always read from the current ! 81: position. The value of the pointer associated with such an ! 82: object is undefined. ! 83: .PP ! 84: Upon successful completion, ! 85: .I read ! 86: and ! 87: .I readv ! 88: return the number of bytes actually read and placed in the buffer. ! 89: The system guarantees to read the number of bytes requested if ! 90: the descriptor references a normal file that has that many bytes left ! 91: before the end-of-file, but in no other case. ! 92: .PP ! 93: If the returned value is 0, then ! 94: end-of-file has been reached. ! 95: .SH "RETURN VALUE ! 96: If successful, the ! 97: number of bytes actually read is returned. ! 98: Otherwise, a \-1 is returned and the global variable ! 99: .I errno ! 100: is set to indicate the error. ! 101: .SH "ERRORS ! 102: .I Read ! 103: and ! 104: .I readv ! 105: will fail if one or more of the following are true: ! 106: .TP 15 ! 107: [EBADF] ! 108: \fID\fP is not a valid file or socket descriptor open for reading. ! 109: .TP 15 ! 110: [EFAULT] ! 111: \fIBuf\fP points outside the allocated address space. ! 112: .TP 15 ! 113: [EIO] ! 114: An I/O error occurred while reading from the file system. ! 115: .TP 15 ! 116: [EINTR] ! 117: A read from a slow device was interrupted before ! 118: any data arrived by the delivery of a signal. ! 119: .TP 15 ! 120: [EINVAL] ! 121: The pointer associated with ! 122: .I d ! 123: was negative. ! 124: .TP 15 ! 125: [EWOULDBLOCK] ! 126: The file was marked for non-blocking I/O, ! 127: and no data were ready to be read. ! 128: .PP ! 129: In addition, ! 130: .I readv ! 131: may return one of the following errors: ! 132: .TP 15 ! 133: [EINVAL] ! 134: .I Iovcnt ! 135: was less than or equal to 0, or greater than 16. ! 136: .TP 15 ! 137: [EINVAL] ! 138: One of the ! 139: .I iov_len ! 140: values in the ! 141: .I iov ! 142: array was negative. ! 143: .TP 15 ! 144: [EINVAL] ! 145: The sum of the ! 146: .I iov_len ! 147: values in the ! 148: .I iov ! 149: array overflowed a 32-bit integer. ! 150: .TP 15 ! 151: [EFAULT] ! 152: Part of the \fIiov\fP points outside the process's allocated address space. ! 153: .SH "SEE ALSO" ! 154: dup(2), fcntl(2), open(2), pipe(2), select(2), socket(2), socketpair(2)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.