.\" Copyright (c) 1998, David Greenman .\" 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 unmodified, 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. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. .\" .\" %FreeBSD: src/lib/libc/sys/sendfile. 2, v 1.6. 2.6 2001/12/14 18:34:01 ru Exp % .\" .\" $FreeBSD: doc/ja_JP.eucJP/man/man2/sendfile. 2, v 1.9 2002/04/14 18:07:01 horikawa Exp $ .Dd November 5, 1998 .Dt SENDFILE 2 .Os .Sh ¸íĪ .Nm sendfile .Nd ÆÄÀÏÀ» ¼ÒÄÏ¿¡ ¼Û½Å .Sh ÇÁ·Î±×·¥ ¶óÀ̺귯¸® .Lb libc .Sh ¼­½Ä .In sys/types.h .In sys/socket.h .In sys/uio.h .Ft int .Fn sendfile "int fd" "int s" "off_t offset" "size_t nbytes" "struct sf_hdtr *hdtr" "off_t *sbytes" "int flags" .Sh ÇØ¼³ .Fn sendfile (Àº)´Â, ±â¼úÀÚ .Fa fd ¿¡ ÀÇÇØ ÁöÁ¤µÈ Åë»óÀÇ ÆÄÀÏÀ», ±â¼úÀÚ .Fa s ¿¡ ÀÇÇØ ÁöÁ¤µÈ ½ºÆ®¸² ¼ÒÄÏÀ¸·ÎºÎÅÍ ¼Û½ÅÇÕ´Ï´Ù. .Pp .Fa offset Àμö´Â ÆÄÀÏÀÇ ¾îµð¿¡¼­ °³½ÃÇØ¾ßÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÕ´Ï´Ù. .Fa nbytes Àμö´Â, ÆÄÀÏÀÇ ¸î ¹ÙÀÌÆ®¸¦ ¼Û½ÅÇÒ Çʿ䰡 ÀÖ´ÂÁö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. 0 Àº, ÆÄÀÏÀÇ ¸¶Áö¸·±îÁö ¼Û½ÅÇÑ´Ù°í Çϴ Ư¼öÇÑ Àǹ̸¦ °¡Áý´Ï´Ù. .Pp ¿É¼ÇÀÇ Çì´õ ¶Ç´Â ºÎ¼ÓÂ÷, ¶Ç´Â ±× ¾çÂÊ ¸ðµÎ´Â, ±¸Á¶Ã¼ sf_hdtr ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÏ´Â °Í¿¡ ÀÇÇØ ÆÄÀÏÀÇ Àü°ú ´ÙÀ½¿¡ ¼Û½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¸Á¶Ã¼ sf_hdtr ÀÇ ±¸Á¶´Â ´ÙÀ½°ú °°½À´Ï´Ù. .Pp .Bd -literal -offset indent -compact struct sf_hdtr { struct iovec *headers; /* Çì´õ iovecs ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ int hdr_cnt; /* Çì´õ iovecs ÀÇ ¼ö */ struct iovec *trailers; /* ºÎ¼ÓÂ÷ iovecs ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ int trl_cnt; /* ºÎ¼ÓÂ÷ iovecs ÀÇ ¼ö */ }; .Ed .Pp .Fa headers Æ÷ÀÎÅÍ¿Í .Fa trailers Æ÷ÀÎÅÍ´Â, NULL °¡ ¾Æ´Ñ °æ¿ì¿¡ ±¸Á¶Ã¼ iovec ±¸Á¶ÀÇ ¹è¿­À» °¡¸®Åµ´Ï´Ù. iovec ±¸Á¶Ã¼ÀÇ »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â, .Fn writev ½Ã½ºÅÛ ÄÝÀ» ÂüÁ¶ÇØ ÁÖ¼¼¿ä. ÀÌ·¯ÇÑ ¹è¿­³»ÀÇ iovecs ÀÇ ¼ö´Â, .Fa hdr_cnt (¿Í)°ú .Fa trl_cnt ¿¡ ÀÇÇØ ÁöÁ¤µË´Ï´Ù. .Pp NULL °¡ ¾Æ´Ñ °æ¿ì¿¡, ½Ã½ºÅÛÀº, ¼ÒÄÏ»ó¿¡ ¼Û½ÅµÈ ÇÕ°è ¹ÙÀÌÆ®¼ö¸¦, .Fa sbytes ¿¡ ÀÇÇØ °¡¸®ÄÑÁø º¯¼ö¿¡ ±â·Ï. .Pp .Fa flags Àμö´Â Çö½ÃÁ¡¿¡¼­´Â ¹ÌÁ¤µµ¸®À̸ç, 0 À¸·Î ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. .Pp ºñºí·ÎÅ· ÀÔÃâ·Â¿ëÀ¸·Î ÁöÁ¤µÈ ¼ÒÄÏÀ» »ç¿ëÇÒ °æ¿ì¿¡, .Fn sendfile (Àº)´Â ¿ä±¸µÇ¾ú´ø °Íº¸´Ùµµ ÀûÀº ¹ÙÀÌÆ®¸¦ ¼Û½ÅÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì, Á¤»óÀûÀ¸·Î ¾²±â¹ÙÀÌÆ®¼ö°¡ .Fa *sbytes (ÁöÁ¤µÇ¾î ÀÖ´Â °æ¿ì)¿¡ µ¹·ÁÁÖ¾îÁ® ¿¡·¯ .Er EAGAIN ÇÏÁö¸¸ µ¹·ÁÁÖ¾îÁý´Ï´Ù. .Sh ½ÇÀå¿¡ °üÇÑ ÁÖ .Fn sendfile ÀÇ .Fx ¿¡¼­ÀÇ ½ÇÀåÀº ¡¸0 Ä«ÇÇ¡¹ÀÔ´Ï´Ù. Áï, ÆÄÀÏ µ¥ÀÌÅÍÀÇ Ä«ÇÇ ÇÏÁö¸¸ ȸÇǵǵµ·Ï(µíÀÌ) ÃÖÀûÈ­µÇ°í ÀÖ½À´Ï´Ù. .Sh ¹Ýȯ°ª .Rv -std sendfile .Sh ¿¡·¯ .Bl -tag -width Er .It Bq Er EBADF .Fa fd ÇÏÁö¸¸ À¯È¿ÇÑ ÆÄÀÏ ±â¼úÀÚ°¡ ¾Æ´Õ´Ï´Ù. .It Bq Er EBADF .Fa s ÇÏÁö¸¸ À¯È¿ÇÑ ¼ÒÄÏ ±â¼úÀÚ°¡ ¾Æ´Õ´Ï´Ù. .It Bq Er ENOTSOCK .Fa s ÇÏÁö¸¸ ¼ÒÄÏÀÌ ¾Æ´Õ´Ï´Ù. .It Bq Er EINVAL .Fa fd ÇÏÁö¸¸ Åë»óÀÇ ÆÄÀÏÀÌ ¾Æ´Õ´Ï´Ù. .It Bq Er EINVAL .Fa s ÇÏÁö¸¸ SOCK_STREAM ÇüÀÇ ¼ÒÄÏÀÌ ¾Æ´Õ´Ï´Ù. .It Bq Er EINVAL .Fa offset ÇÏÁö¸¸ ºÎÀÎÁö, ¶Ç´Â ¹üÀ§¿ÜÀÔ´Ï´Ù. .It Bq Er ENOTCONN .Fa s (Àº)´Â, ¹ÌÁ¢¼ÓÀÇ ¼ÒÄÏÀ» °¡¸®Å°°í ÀÖ½À´Ï´Ù. .It Bq Er EPIPE Åë½Å »ó´ë°¡ Á¢¼ÓÀ» ´Ý¾Æ ¹ö·È½À´Ï´Ù. .It Bq Er EIO .Fa fd (À¸)·ÎºÎÅÍ ÀбâÁß¿¡ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù. .It Bq Er EFAULT ÆÄ¶ó¹ÌÅÍ¿¡ ´ëÇØ ¹«È¿ÀÎ ÁÖ¼Ò°¡ ÁöÁ¤µÇ¾ú½À´Ï´Ù. .It Bq Er EAGAIN ¼ÒÄÏÀº ºñºí·ÎÅ· ÀÔÃâ·Â°ú ÁöÁ¤µÇ¾î ÀÖ¾î ¼ÒÄÏ ¹öÆÛ°¡ ¸¸¹èÀ̱â À§Çؼ­(¶§¹®¿¡) ¸ðµç µ¥ÀÌÅͰ¡ ¼Û½ÅµÇÁö ¾Ê¾Ò½À´Ï´Ù. sbytes °¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì, ¼Û½ÅÀÌ Á¤»óÀûÀ¸·Î ¿Ï·áÇÑ ¹ÙÀÌÆ®¼ö°¡ .Fa *sbytes ¾È¿¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. .El .Sh °ü·Ã Ç׸ñ .Xr open 2 , .Xr send 2 , .Xr socket 2 , .Xr writev 2 .Sh ¿ª»ç .Fn sendfile (Àº)´Â, .Fx 3.0 ±×¸®°í óÀ½ µîÀåÇß½À´Ï´Ù. ÀÌ ¸Þ´º¾ó ÆäÀÌÁö´Â .Fx 3.1 ±×¸®°í óÀ½ µîÀåÇß½À´Ï´Ù. .Sh ÀúÀÚ .Fn sendfile °÷ÀÇ ¸Þ´º¾ó ÆäÀÌÁö´Â .An David Greenman Aq dg@root.com ÇÏÁö¸¸ ÀÛ¼ºÇß½À´Ï´Ù.