vmsplice

Autres langues

Langue: ja

Autres versions - même langue

Version: 2006-04-28 (openSuse - 09/10/07)

Section: 2 (Appels système)

̾Á°

vmsplice - ¥æ¡¼¥¶¡¦¥Ú¡¼¥¸¤ò¥Ñ¥¤¥×¤Ë·Ñ¤®¹ç¤ï¤»¤ë

½ñ¼°


#define _GNU_SOURCE

#include <fcntl.h>

#include <sys/uio.h>



long vmsplice(int fd, const struct iovec *iov,

              unsigned long nr_segs, unsigned int flags);

DESCRIPTION

vmsplice() ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢ iov ¤Ç»ØÄꤵ¤ì¤¿¥æ¡¼¥¶¡¦¥á¥â¥ê¤Î nr_segs ¤ÎÈϰϤò¥Ñ¥¤¥×¤Ë¥Þ¥Ã¥Ô¥ó¥°¤¹¤ë¡£ fd ¤Ï¥Ñ¥¤¥×¤ò»²¾È¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

¥Ý¥¤¥ó¥¿ iov ¤Ï iovec ¹½Â¤ÂΤÎÇÛÎó¤ò»Ø¤¹¡£ iovec ¹½Â¤ÂÎ¤Ï <sys/uio.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:


struct iovec {

    void  *iov_base;            /* ³«»Ï¥¢¥É¥ì¥¹ */

    size_t iov_len;             /* ¥Ð¥¤¥È¿ô */

};

flags °ú¤­¿ô¤Ë¤Ï¡¢°Ê²¼¤ÎÃͤΠ0 ¸Ä°Ê¾å¤ò¥Ó¥Ã¥ÈËè¤ÎÏÀÍýϤηÁ¤Ç»ØÄꤹ¤ë¡£

SPLICE_F_MOVE
vmsplice() ¤Ç¤Ï̤»ÈÍÑ¡£ splice(2) »²¾È¡£
SPLICE_F_NONBLOCK
Æþ½ÐÎϤÇÄä»ß (block) ¤·¤Ê¤¤¡£¾ÜºÙ¤Ï splice(2) »²¾È¡£
SPLICE_F_MORE
¸½ºß¤Î¤È¤³¤í vmsplice() ¤Ç¤Ï²¿¤Î¸ú²Ì¤â¤Ê¤¤¤¬¡¢¾­ÍèŪ¤Ë¤Ï¼ÂÁõ¤µ¤ì¤ë²ÄǽÀ­¤¬¤¢¤ë¡£ splice(2) »²¾È¡£
SPLICE_F_GIFT
¥æ¡¼¥¶¡¦¥Ú¡¼¥¸¤¬¥«¡¼¥Í¥ë¤ØÅϤ¹¤â¤Î (gift) ¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹¡£ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¤³¤Î¥á¥â¥ê¤òÀäÂФËÊѹ¹¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ ¤µ¤â¤Ê¤±¤ì¤Ð¡¢¥Ú¡¼¥¸¥­¥ã¥Ã¥·¥å¤È¥Ç¥£¥¹¥¯¾å¤Î¥Ç¡¼¥¿¤Ï °ìÃפ·¤Ê¤¯¤Ê¤ë¤À¤í¤¦¡£ ¥Ú¡¼¥¸¤ò¥«¡¼¥Í¥ë¤ËÅϤ¹¤È¡¢¤³¤Î¼¡¤Î splice(2) SPLICE_F_MOVE ¤Ç¤½¤Î¥Ú¡¼¥¸¤Î°ÜÆ°¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤Î¥Õ¥é¥°¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¤³¤Î¼¡¤Î splice(2) SPLICE_F_MOVE ¤Ç¤½¤Î¥Ú¡¼¥¸¤Î¥³¥Ô¡¼¤ò¹Ô¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¥Ç¡¼¥¿¤Ï¥á¥â¥ê¾å¤Ç¥Ú¡¼¥¸¶­³¦¤Ë¤¢¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢ Ťµ¤â¥Ú¡¼¥¸¶­³¦¤ÎÇÜ¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

ÊÖ¤êÃÍ

À®¸ù¤·¤Æ´°Î»¤¹¤ë¤È¡¢ vmsplice() ¤Ï¥Ñ¥¤¥×¤ËžÁ÷¤·¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£ ¥¨¥é¡¼¤Î¾ì¹ç¡¢ vmplice() ¤Ï -1 ¤òÊÖ¤·¡¢ errno ¤ò¥¨¥é¡¼¤ò¼¨¤¹ÃͤËÀßÄꤹ¤ë¡£

¥¨¥é¡¼

EBADF
fd ¤¬Í­¸ú¤Ç¤Ê¤¤¡¢¤â¤·¤¯¤Ï¥Ñ¥¤¥×¤ò»²¾È¤·¤Æ¤¤¤Ê¤¤¡£
EINVAL
nr_segs ¤¬ 0 ¤â¤·¤¯¤Ï IOV_MAX ¤è¤ê¤âÂ礭¤¤¡£¤Þ¤¿¤Ï SPLICE_F_GIFT ¤¬ÀßÄꤵ¤ì¤¿¤¬¥á¥â¥ê¤¬¥Ú¡¼¥¸¶­³¦¤Ë¤¢¤Ã¤Æ¤¤¤Ê¤¤¡£
ENOMEM
¥á¥â¥êÉÔ­¡£

¥Ð¡¼¥¸¥ç¥ó

vmsplice(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Linux 2.6.17 ¤Ç½é¤á¤ÆÅо줷¤¿¡£

½àµò

¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Linux ¸ÇÍ­¤Ç¤¢¤ë¡£

È÷¹Í

»ØÄꤵ¤ì¤¿¥»¥°¥á¥ó¥È¿ô¤¬¾å¸Â¤Ë㤷¤¿¾ì¹ç¡¢ vmsplice() ¤Ï¾¤Î¥Ù¥¯¥È¥ë·Á¼°¤Î read/write ¤ò¹Ô¤¦´Ø¿ô¤ÈƱ¤¸Æ°ºî¤ò¤¹¤ë¡£ ¾å¸Â¤Ï IOV_MAX ¤Ç¤¢¤ê¡¢ <limits.h> ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£ ¤³¤Î¥É¥­¥å¥á¥ó¥È¤ò½ñ¤¤¤¿»þÅÀ¤Ç¤ÎÃÍ¤Ï 1024 ¤Ç¤¢¤ë¡£

´ØÏ¢¹àÌÜ

splice(2), tee(2), feature_test_macros(7)