233 lines
6.2 KiB
Groff
233 lines
6.2 KiB
Groff
.\" 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. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. 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.
|
|
.\"
|
|
.\" @(#)read.2 8.4 (Berkeley) 2/26/94
|
|
.\" %FreeBSD: src/lib/libc/sys/read.2,v 1.25.2.1 2004/11/13 11:55:41 yar Exp %
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.Dd October 16, 2004
|
|
.Dt READ 2
|
|
.Os
|
|
.Sh ̾¾Î
|
|
.Nm read ,
|
|
.Nm readv ,
|
|
.Nm pread
|
|
.Nd ÆþÎϤòÆÉ¤ß¼è¤ë
|
|
.Sh ¥é¥¤¥Ö¥é¥ê
|
|
.Lb libc
|
|
.Sh ½ñ¼°
|
|
.In sys/types.h
|
|
.In sys/uio.h
|
|
.In unistd.h
|
|
.Ft ssize_t
|
|
.Fn read "int d" "void *buf" "size_t nbytes"
|
|
.Ft ssize_t
|
|
.Fn readv "int d" "const struct iovec *iov" "int iovcnt"
|
|
.Ft ssize_t
|
|
.Fn pread "int d" "void *buf" "size_t nbytes" "off_t offset"
|
|
.Sh ²òÀâ
|
|
.Fn read
|
|
¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢µ½Ò»Ò
|
|
.Fa d
|
|
¤Ç»²¾È¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤«¤é
|
|
.Fa buf
|
|
¤¬»Ø¤¹¥Ð¥Ã¥Õ¥¡¤Ø
|
|
.Fa nbytes
|
|
¤Î¥Ç¡¼¥¿¤òÆÉ¤ß¼è¤í¤¦¤È¤·¤Þ¤¹¡£
|
|
.Fn readv
|
|
¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÏƱÍͤνèÍý¤ò¼Â¹Ô¤·¤Þ¤¹¤¬¡¢ÇÛÎó
|
|
.Fa iov
|
|
: iov[0], iov[1], ..., iov[iovcnt\|\-\|1]
|
|
¤Î¥á¥ó¥Ð¤Ç»ØÄꤵ¤ì¤ë
|
|
.Fa iovcnt
|
|
¸Ä¤Î¥Ð¥Ã¥Õ¥¡¤ËÆþÎϥǡ¼¥¿¤òʬ»¶¤µ¤»¤Þ¤¹¡£
|
|
.Fn pread
|
|
¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÏƱÍͤε¡Ç½¤ò¼Â¹Ô¤·¤Þ¤¹¤¬¡¢
|
|
¥Õ¥¡¥¤¥ëÆâ¤Î»ØÄê¤Î°ÌÃÖ¤«¤éÆÉ¤ß¼è¤Ã¤¿¸å¡¢
|
|
¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤òÊѹ¹¤·¤Þ¤»¤ó¡£
|
|
.Pp
|
|
.Fn readv
|
|
¤ËÂФ¹¤ë
|
|
.Fa iovec
|
|
¹½Â¤ÂΤϼ¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Þ¤¹:
|
|
.Pp
|
|
.Bd -literal -offset indent -compact
|
|
struct iovec {
|
|
void *iov_base; /* ¥Ù¡¼¥¹¥¢¥É¥ì¥¹ */
|
|
size_t iov_len; /* Ťµ */
|
|
};
|
|
.Ed
|
|
.Pp
|
|
.Fa iovec
|
|
¤Î³Æ¥¨¥ó¥È¥ê¤Ï¡¢¥Ç¡¼¥¿¤òÇÛÃÖ¤¹¤ë¤Ù¤¥á¥â¥êÎΰè¤Î¥Ù¡¼¥¹¥¢¥É¥ì¥¹¤È
|
|
Ťµ¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¡£
|
|
.Fn readv
|
|
¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢¼¡¤Î¥¨¥ó¥È¥ê¤Ë¿Ê¤àÁ°¤Ëɬ¤ºÎΰè¤ò´°Á´¤ËËþ¤¿¤·¤Þ¤¹¡£
|
|
.Pp
|
|
¥·¡¼¥¯²Äǽ¤Ê¥ª¥Ö¥¸¥§¥¯¥È¾å¤Ç¤Ï
|
|
.Fn read
|
|
¤Ï
|
|
.Fa d
|
|
¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿¥Ý¥¤¥ó¥¿¤¬»ØÄꤹ¤ë°ÌÃÖ¤«¤é³«»Ï¤·¤Þ¤¹
|
|
.Pf ( Xr lseek 2
|
|
¤ò»²¾È)¡£
|
|
.Fn read
|
|
¤«¤é¤ÎÌá¤ê»þ¤Ë¡¢¥Ý¥¤¥ó¥¿¤Ï¼ÂºÝ¤ËÆÉ¤ß¼è¤é¤ì¤¿¥Ð¥¤¥È¿ô¤À¤±Áý²Ã¤µ¤»¤é¤ì¤Þ¤¹¡£
|
|
.Pp
|
|
¥·¡¼¥¯¤Ç¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤Ïɬ¤º¸½ºß¤Î°ÌÃÖ¤«¤éÆÉ¤ß¼è¤é¤ì¤Þ¤¹¡£
|
|
¤½¤Î¤è¤¦¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿¥Ý¥¤¥ó¥¿¤ÎÃͤÏ̤ÄêµÁ¤Ç¤¹¡£
|
|
.Pp
|
|
½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢
|
|
.Fn read ,
|
|
.Fn readv
|
|
¤ª¤è¤Ó
|
|
.Fn pread
|
|
¤Ï¡¢¼ÂºÝ¤ËÆÉ¤ß¼è¤é¤ì¥Ð¥Ã¥Õ¥¡Æâ¤ËÇÛÃÖ¤µ¤ì¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤·¤Þ¤¹¡£
|
|
µ½Ò»Ò¤¬Ä̾ï¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¤ª¤ê¡¢
|
|
¥Õ¥¡¥¤¥ë¤Î½ªÃ¼¤Þ¤Ç¤Ë½½Ê¬¤ÊÎ̤ΥХ¤¥È¤¬¤¢¤ì¤Ð¡¢
|
|
¥·¥¹¥Æ¥à¤ÏÍ׵ᤵ¤ì¤¿¥Ð¥¤¥È¿ô¤òÆÉ¤ß¼è¤ë¤³¤È¤òÊݾڤ·¤Þ¤¹¤¬¡¢
|
|
¾¤Î¥±¡¼¥¹¤Ç¤Ï¤½¤¦¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
|
|
.Sh Ìá¤êÃÍ
|
|
Àµ¾ï¤Ë´°Î»¤¹¤ë¤È¡¢¼ÂºÝ¤ËÆÉ¤ß¼è¤é¤ì¤¿¥Ð¥¤¥È¿ô¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£
|
|
¥Õ¥¡¥¤¥ë½ªÎ» (EOF) ¤¬ÆÉ¤ß¼è¤é¤ì¤ë¤È 0 ¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£
|
|
¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï -1 ¤¬ÊÖ¤µ¤ì¡¢¥¨¥é¡¼¤ò¼¨¤¹¤¿¤á¤Ë¥°¥í¡¼¥Ð¥ëÊÑ¿ô
|
|
.Va errno
|
|
¤¬ÀßÄꤵ¤ì¤Þ¤¹¡£
|
|
.Sh ¥¨¥é¡¼
|
|
.Fn read ,
|
|
.Fn readv
|
|
¤ª¤è¤Ó
|
|
.Fn pread
|
|
¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¼¡¤Î¾ì¹ç¤ò½ü¤¤¤ÆÀµ¾ï¤Ë´°Î»¤·¤Þ¤¹:
|
|
.Bl -tag -width Er
|
|
.It Bq Er EBADF
|
|
.Fa d
|
|
°ú¿ô¤ÏÆÉ¼è¤êÍѤ˥ª¡¼¥×¥ó¤µ¤ì¤¿Í¸ú¤Ê¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï
|
|
¥½¥±¥Ã¥È¤Îµ½Ò»Ò¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
|
|
.It Bq Er EFAULT
|
|
.Fa buf
|
|
°ú¿ô¤Ï¡¢¥×¥í¥»¥¹¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¥¢¥É¥ì¥¹¶õ´Ö¤ÎÈϰϳ°¤ò»Ø¤·¤Æ¤¤¤Þ¤¹¡£
|
|
.It Bq Er EIO
|
|
¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤«¤éÆÉ¤ß¼è¤Ã¤Æ¤¤¤ë´Ö¤ËÆþ½ÐÎÏ¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£
|
|
.It Bq Er EINTR
|
|
¥Ç¡¼¥¿¤¬ÅþÃ夹¤ëÁ°¤Ë¡¢¥·¥°¥Ê¥ë¤ÎÇÛÁ÷¤Ë¤è¤êÄ㮥ǥХ¤¥¹¤«¤é¤ÎÆÉ¼è¤ê¤¬
|
|
³ä¤ê¹þ¤Þ¤ì¤Þ¤·¤¿¡£
|
|
.It Bq Er EINVAL
|
|
.Fa d
|
|
¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿¥Ý¥¤¥ó¥¿¤¬Éé¤Ç¤·¤¿¡£
|
|
.It Bq Er EAGAIN
|
|
¥Õ¥¡¥¤¥ë¤ÏÈó¥Ö¥í¥Ã¥¥ó¥°Æþ½ÐÎϤȥޡ¼¥¯¤µ¤ì¤Æ¤ª¤ê¡¢
|
|
ÆÉ¼è¤ê¤Î½àÈ÷¤¬¤Ç¤¤¿¥Ç¡¼¥¿¤¬¤¢¤ê¤Þ¤»¤ó¡£
|
|
.It Bq Er EISDIR
|
|
¥Õ¥¡¥¤¥ëµ½Ò»Ò¤¬¡¢¥Ç¥£¥ì¥¯¥È¥ê¾å¤Ç¤ÎÉáÄÌ¤ÎÆÉ¤ß¹þ¤ßÁàºî¤òµö²Ä¤·¤Æ¤¤¤Ê¤¤
|
|
¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à (Î㤨¤Ð NFS) ¤Ë°¤·¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë
|
|
´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£
|
|
.It Bq Er EOPNOTSUPP
|
|
¥Õ¥¡¥¤¥ëµ½Ò»Ò¤¬¡¢ÉáÄÌ¤ÎÆÉ¤ß¹þ¤ßÁàºî¤òµö²Ä¤·¤Æ¤¤¤Ê¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ª¤è¤Ó
|
|
¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£
|
|
.It Bq Er EOVERFLOW
|
|
¥Õ¥¡¥¤¥ëµ½Ò»Ò¤¬ÉáÄ̤Υե¡¥¤¥ë¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤Æ¡¢
|
|
.Fa nbytes
|
|
¤¬ 0 ¤è¤ê¤âÂ礤¯¡¢
|
|
.Fa offset
|
|
¤¬¥Õ¥¡¥¤¥ë¤ÎËöÈø¤ÎÁ°¤Ë¤¢¤ê¡¢¤«¤Ä
|
|
.Fa offset
|
|
¤¬¤³¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¼ý¤Þ¤ë¥ª¥Õ¥»¥Ã¥È¤ÎºÇÂçÃͰʾå¤Ç¤¹¡£
|
|
.El
|
|
.Pp
|
|
¤µ¤é¤Ë¡¢
|
|
.Fn readv
|
|
¤Ï¼¡¤Î¥¨¥é¡¼¤Î¤¦¤Á¤Î 1 ¤Ä¤òÊÖ¤¹¤³¤È¤¬¤¢¤ê¤Þ¤¹:
|
|
.Bl -tag -width Er
|
|
.It Bq Er EINVAL
|
|
.Fa iovcnt
|
|
°ú¿ô¤¬ 0 °Ê²¼¤Ç¤¢¤ë¤«¡¢¤Þ¤¿¤Ï
|
|
.Dv IOV_MAX
|
|
¤è¤êÂ礤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
|
|
.It Bq Er EINVAL
|
|
.Fa iov
|
|
ÇÛÎó¤ÎÃæ¤Î
|
|
.Fa iov_len
|
|
ÃͤΠ1 ¤Ä¤¬Éé¤Ç¤·¤¿¡£
|
|
.It Bq Er EINVAL
|
|
.Fa iov
|
|
ÇÛÎó¤ÎÃæ¤Î
|
|
.Fa iov_len
|
|
Ãͤιç·×¤¬ 32 ¥Ó¥Ã¥ÈÀ°¿ô¤ò¥ª¡¼¥Ð¥Õ¥í¡¼¤·¤Þ¤·¤¿¡£
|
|
.It Bq Er EFAULT
|
|
.Fa iov
|
|
¤Î°ìÉô¤¬¡¢¥×¥í¥»¥¹¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¥¢¥É¥ì¥¹¶õ´Ö¤ÎÈϰϳ°¤ò»Ø¤·¤Æ¤¤¤Þ¤¹¡£
|
|
.El
|
|
.Pp
|
|
.Fn pread
|
|
¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¼¡¤Î¥¨¥é¡¼¤òÊÖ¤¹¤³¤È¤â¤¢¤ê¤Þ¤¹:
|
|
.Bl -tag -width Er
|
|
.It Bq Er EINVAL
|
|
.Fa offset
|
|
¤ÎÃͤ¬Éé¤Ç¤¹¡£
|
|
.It Bq Er ESPIPE
|
|
¥Õ¥¡¥¤¥ëµ½Ò»Ò¤¬¥Ñ¥¤¥×¡¢¥½¥±¥Ã¥È¡¢¤Þ¤¿¤Ï FIFO ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£
|
|
.El
|
|
.Sh ´ØÏ¢¹àÌÜ
|
|
.Xr dup 2 ,
|
|
.Xr fcntl 2 ,
|
|
.Xr getdirentries 2 ,
|
|
.Xr open 2 ,
|
|
.Xr pipe 2 ,
|
|
.Xr select 2 ,
|
|
.Xr socket 2 ,
|
|
.Xr socketpair 2 ,
|
|
.Xr fread 3 ,
|
|
.Xr readdir 3
|
|
.Sh µ¬³Ê
|
|
.Fn read
|
|
¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï
|
|
.St -p1003.1-90
|
|
¤ËŬ¹ç¤·¤Æ¤¤¤Þ¤¹¡£
|
|
.Fn readv
|
|
¥·¥¹¥Æ¥à¥³¡¼¥ë¤È
|
|
.Fn pread
|
|
¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï
|
|
.St -xpg4.2
|
|
¤ËŬ¹ç¤·¤Æ¤¤¤Þ¤¹¡£
|
|
.Sh Îò»Ë
|
|
.Fn pread
|
|
´Ø¿ô¤Ï
|
|
.At V.4
|
|
¤ÇÅо줷¤Þ¤·¤¿¡£
|
|
.Fn readv
|
|
¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï
|
|
.Bx 4.2
|
|
¤ÇÅо줷¤Þ¤·¤¿¡£
|
|
.Fn read
|
|
´Ø¿ô¤Ï
|
|
.At v6
|
|
¤ÇÅо줷¤Þ¤·¤¿¡£
|