unix

Autres langues

Langue: ja

Version: 2004-05-27 (openSuse - 09/10/07)

Section: 7 (Divers)

̾Á°

unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL - ¥í¡¼¥«¥ë¤Ê ¥×¥í¥»¥¹´ÖÄÌ¿®ÍѤΥ½¥±¥Ã¥È

½ñ¼°

#include <sys/socket.h>
#include <sys/un.h>

unix_socket = socket(PF_UNIX, type, 0);
error = socketpair(PF_UNIX, type, 0, int *sv);

ÀâÌÀ

PF_UNIX (PF_LOCAL ¤ä PF_FILE ¤È¤â¸À¤ï¤ì¤ë) ¥½¥±¥Ã¥È¥Õ¥¡¥ß¥ê¡¼¤Ï¡¢Æ±¤¸¥Þ¥·¥ó¾å¤Ç¥×¥í¥»¥¹Æ±»Î¤¬ ¸úΨŪ¤ËÄÌ¿®¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ Unix ¥½¥±¥Ã¥È¤Ï¡¢ (socketpair(2) ¤ÇºîÀ®¤·¤Æ) ̾Á°¤Ê¤·¤Ë¤â¤Ç¤­¤ë¤·¡¢¥½¥±¥Ã¥È·¿¤Î¥Õ¥¡¥¤¥ë¤Ë ´ØÏ¢¤Å¤±¤ë¤³¤È¤â¤Ç¤­¤ë¡£ ¤µ¤é¤Ë Linux ¤Ç¤Ï¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë°Í¸¤·¤Ê¤¤ Ãê¾Ý̾Á°¶õ´Ö (abstract namespace) ¤â¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£

Í­¸ú¤Ê¥¿¥¤¥×¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë:

SOCK_STREAM
¥¹¥È¥ê¡¼¥à»Ø¸þ¤Î¥½¥±¥Ã¥È
SOCK_DGRAM
¥á¥Ã¥»¡¼¥¸¶­³¦¤òÊݸ¤¹¤ë¥Ç¡¼¥¿¥°¥é¥à»Ø¸þ¤Î¥½¥±¥Ã¥È (¤Û¤È¤ó¤É¤Î Unix ¤Î¼ÂÁõ¤Ç¤Ï¡¢Unix ¥É¥á¥¤¥ó¡¦¥Ç¡¼¥¿¥°¥é¥à¡¦¥½¥±¥Ã¥È¤Ï ¾ï¤Ë¿®Íê¤Ç¤­¡¢¥Ç¡¼¥¿¥°¥é¥à¤ÎʤÓÂؤ¨¤Ï¹Ô¤ï¤Ê¤¤)
SOCK_SEQPACKET
(¥«¡¼¥Í¥ë 2.6.4 °Ê¹ß¤ÇÍøÍѤǤ­¤ë) ¥á¥Ã¥»¡¼¥¸¶­³¦¤òÊݸ¤·¡¢Á÷¿®¤µ¤ì¤¿½ç½ø¤Ç¥á¥Ã¥»¡¼¥¸¤òÆϤ±¤ëÀܳ»Ø¸þ¥½¥±¥Ã¥È

Unix ¥½¥±¥Ã¥È¤Ç¤Ï¡¢Êä½õ¥Ç¡¼¥¿¤ò»È¤Ã¤Æ ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ä¥×¥í¥»¥¹¤Î¿®Ç¤¾õ (credential) ¤ò Á÷¼õ¿®¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£

¥¢¥É¥ì¥¹¤Î¥Õ¥©¡¼¥Þ¥Ã¥È

Unix ¥¢¥É¥ì¥¹¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ç¤Ï¥Õ¥¡¥¤¥ë̾¤È¤·¤ÆÄêµÁ¤µ¤ì¡¢ Ãê¾Ý̾Á°¶õ´Ö¤Ç¤Ï¾¤È½Å¤Ê¤é¤Ê¤¤Ê¸»úÎó¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£ socketpair(2) ¤Çºî¤é¤ì¤¿¥½¥±¥Ã¥È¤Ï̾Á°¤¬¤Ê¤¤¡£Ì¾Á°¤Ê¤·¥½¥±¥Ã¥È°Ê³°¤Î¥½¥±¥Ã¥È¤Ç¤Ï¡¢ ÀܳÀ西¡¼¥²¥Ã¥È¤Î¥¢¥É¥ì¥¹¤ò connect(2) ¤ò»È¤Ã¤ÆÀßÄê¤Ç¤­¤ë¡£ ¥í¡¼¥«¥ë¥¢¥É¥ì¥¹¤Ï bind(2) ¤ò»È¤Ã¤ÆÀßÄê¤Ç¤­¤ë¡£ ¥í¡¼¥«¥ë¥¢¥É¥ì¥¹¤ò¤Þ¤À»ý¤Ã¤Æ¤¤¤Ê¤¤¥½¥±¥Ã¥È¤¬Àܳ¤µ¤ì¤¿¾ì¹ç¡¢ ¼«Æ°Åª¤ËÃê¾Ý̾Á°¶õ´Ö¤Ë¾¤È½Å¤Ê¤é¤Ê¤¤¥¢¥É¥ì¥¹¤¬À¸À®¤µ¤ì¤ë¡£

#define UNIX_PATH_MAX    108



struct sockaddr_un {

    sa_family_t    sun_family;               /* AF_UNIX */

    char           sun_path[UNIX_PATH_MAX];  /* pathname */

};

sun_family ¤Ë¤Ïɬ¤º AF_UNIX ¤¬Æþ¤Ã¤Æ¤¤¤ë¡£ sun_path ¤Ë¤Ï¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àÃæ¤Î¥½¥±¥Ã¥È̾¤¬¡¢ NULL ¤Ç½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤È¤·¤Æ ³ÊǼ¤µ¤ì¤Æ¤¤¤ë¡£ sun_path ¤¬ NULL ¥Ð¥¤¥È ('\0') ¤Ç»Ï¤Þ¤ë¾ì¹ç¡¢ ¤³¤ì¤Ï Unix ¥×¥í¥È¥³¥ë¥â¥¸¥å¡¼¥ë¤Ç´ÉÍý¤µ¤ì¤Æ¤¤¤ë Ãê¾Ý̾Á°¶õ´Ö¤ò»²¾È¤¹¤ë¡£ ¤³¤Î̾Á°¶õ´Ö¤Ë¤ª¤±¤ë¥½¥±¥Ã¥È¤Î¥¢¥É¥ì¥¹¤Ï¡¢ sun_path ¤Î»Ä¤ê¤Î¥Ð¥¤¥È¤Çɽ¤µ¤ì¤ë¡£ Ãê¾Ý̾Á°¶õ´Ö¤ËÃÖ¤±¤ë̾Á°¤Ï NULL ¤Ç½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃí°Õ¡£

¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó

Îò»ËŪ¤ÊÍýͳ¤Ë¤è¤ê¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ï ¤¿¤È¤¨ PF_UNIX ¸ÇÍ­¤Î¥ª¥×¥·¥ç¥ó¤Ç¤¢¤Ã¤Æ¤â SOL_SOCKET ·¿¤Ç»ØÄꤹ¤ë¡£ ¥½¥±¥Ã¥È¥Õ¥¡¥ß¥ê¡¼¤È¤·¤Æ SOL_SOCKET ¤ò»ØÄꤹ¤ë¤È¡¢ setsockopt(2) ¤Ç¥ª¥×¥·¥ç¥ó¤¬ÀßÄê¤Ç¤­¡¢ getsockopt(2) ¤Ç¼èÆÀ¤¬¤Ç¤­¤ë¡£
SO_PASSCRED
Á÷¿®¥×¥í¥»¥¹¤ÎÊä½õ¥á¥Ã¥»¡¼¥¸¤È¤·¤Æ¿®Ç¤¾õ¤ò¼õ¿®¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Æ¡¢¤Þ¤À¥½¥±¥Ã¥È¤¬Àܳ¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢ Ãê¾Ý̾Á°¶õ´Ö¤Ë¾¤È½Å¤Ê¤é¤Ê¤¤Ì¾Á°¤¬¼«Æ°Åª¤ËÀ¸À®¤µ¤ì¤ë¡£ ¥Ö¡¼¥ëÀ°¿ôÃͤΥե饰¤ò¼è¤ë¡£

¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëµ¡Ç½¡¢¤µ¤ì¤Æ¤¤¤Ê¤¤µ¡Ç½

¤³¤ÎÀá¤Ç¤Ï¡¢Linux ¤Î Unix ¥É¥á¥¤¥ó¡¦¥½¥±¥Ã¥È¤Ç¤Î¡¢ ¥É¥á¥¤¥ó¸ÇÍ­¤Î¾ÜºÙ»ÅÍͤȥ½¥±¥Ã¥È API ¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤µ¡Ç½¤Ë ¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë¡£

Unix ¥É¥á¥¤¥ó¡¦¥½¥±¥Ã¥È¤Ç¤Ï¡¢ÂÓ°è³°¥Ç¡¼¥¿ (out-of-band data) ¤Î Á÷¿® (send(2) ¤È recv(2) ¤Î MSG_OOB ¥Õ¥é¥°) ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£

send(2) MSG_MORE ¥Õ¥é¥°¤Ï Unix ¥É¥á¥¤¥ó¡¦¥½¥±¥Ã¥È¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£

SO_SNDBUF ¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤Ï Unix ¥É¥á¥¤¥ó¡¦¥½¥±¥Ã¥È¤Ç¸ú²Ì¤ò»ý¤Ä¤¬¡¢ SO_RCVBUF ¤Ï¸ú²Ì¤¬¤Ê¤¤¡£ ¥Ç¡¼¥¿¥°¥é¥à¡¦¥½¥±¥Ã¥È¤Ç¤Ï¡¢ SO_SNDBUF ¤ÎÃͤ¬½ÐÎϥǡ¼¥¿¥°¥é¥à¤Î¾å¸Â¥µ¥¤¥º¤È¤Ê¤ë¡£ ¼ÂºÝ¤Î¾å¸ÂÃͤϡ¢ SO_SNDBUF ¥ª¥×¥·¥ç¥ó¤È¤·¤ÆÀßÄꤵ¤ì¤¿ÃͤΠ2ÇÜ (socket(7) »²¾È) ¤«¤é¥ª¡¼¥Ð¥Ø¥Ã¥É¤È¤·¤Æ»ÈÍѤµ¤ì¤ë 32 ¥Ð¥¤¥È¤ò°ú¤¤¤¿ÃͤȤʤ롣

Êä½õ¥á¥Ã¥»¡¼¥¸

Êä½õ¥Ç¡¼¥¿¤òÁ÷¼õ¤¹¤ë¤Ë¤Ï¡¢ sendmsg(2) ¤ä recvmsg(2) ¤ò»ÈÍѤ¹¤ë¡£ Îò»ËŪ¤ÊÍýͳ¤Ë¤è¤ê¡¢°Ê²¼¤Ë¼¨¤¹Êä½õ¥á¥Ã¥»¡¼¥¸¤Î·¿¤Ï ¤¿¤È¤¨ PF_UNIX ¸ÇÍ­¤Î¤â¤Î¤Ç¤¢¤Ã¤Æ¤â SOL_SOCKET ·¿¤Ç»ØÄꤹ¤ë¡£ ¤³¤ì¤é¤òÁ÷¤ë¤Ë¤Ï¡¢¹½Â¤ÂÎ cmsghdr ¤Î cmsg_level ¥Õ¥£¡¼¥ë¥É¤Ë SOL_SOCKET ¤ò¥»¥Ã¥È¤·¡¢ cmsg_type ¥Õ¥£¡¼¥ë¥É¤Ë¥¿¥¤¥×¤ò¥»¥Ã¥È¤¹¤ë¡£ ¾ÜºÙ¤Ï cmsg(3) ¤ò¸«¤è¡£
SCM_RIGHTS
¾¤Î¥×¥í¥»¥¹¤Ç¥ª¡¼¥×¥ó¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Î¥»¥Ã¥È¤òÁ÷¼õ¿®¤¹¤ë¡£ ¥Ç¡¼¥¿Éôʬ¤Ë¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ÎÀ°¿ôÇÛÎó¤¬Æþ¤Ã¤Æ¤¤¤ë¡£ ÅϤµ¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï¡¢¤¢¤¿¤«¤â dup(2) ¤ÇÀ¸À®¤µ¤ì¤¿¤«¤Î¤è¤¦¤Ë¿¶¤ëÉñ¤¦¡£
SCM_CREDENTIALS
Unix ¿®Ç¤¾õ¤òÁ÷¼õ¿®¤¹¤ë¡£¤³¤ì¤Ïǧ¾Ú¤ËÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¿®Ç¤¾õ¤Ï¡¢ struct ucred ¤ÎÊä½õ¥á¥Ã¥»¡¼¥¸¤È¤·¤ÆÅϤµ¤ì¤ë¡£

struct ucred {

    pid_t pid;    /* process ID of the sending process */

    uid_t uid;    /* user ID of the sending process */

    gid_t gid;    /* group ID of the sending process */

};

Á÷¿®Â¦¤¬»ØÄꤷ¤¿¿®Ç¤¾õ¤Ï¡¢¥«¡¼¥Í¥ë¤¬¥Á¥§¥Ã¥¯¤¹¤ë¡£ ¼Â¸ú¥æ¡¼¥¶¡¼ ID ¤¬ 0 ¤Î¥×¥í¥»¥¹¤Ë¤Ï¡¢ ¼«Ê¬¼«¿È°Ê³°¤ÎÃͤò»ØÄꤹ¤ë»ö¤¬µö¤µ¤ì¤ë¡£ Á÷¿®Â¦¤Ï°Ê²¼¤Î 3 ¤Ä¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ 1) ¼«Ê¬¼«¿È¤Î¥×¥í¥»¥¹ ID (CAP_SYS_ADMIN ¸¢¸Â¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç)¡¢ 2) ¼«Ê¬¼«¿È¤Î¥æ¡¼¥¶¡¼ ID ¤¢¤ë¤¤¤Ï¼Â¸ú¥æ¡¼¥¶¡¼ ID ¤«Êݸ set-user-ID (CAP_SETUID ¸¢¸Â¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç)¡¢ 3) ¼«Ê¬¼«¿È¤Î¥°¥ë¡¼¥× ID ¤¢¤ë¤¤¤Ï¼Â¹Ô¥°¥ë¡¼¥× ID ¤«Êݸ set-group-ID (CAP_SETGID ¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç)¡£ struct ucred ¥á¥Ã¥»¡¼¥¸¤ò¼õ¿®¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¥½¥±¥Ã¥È¤ËÂФ· SO_PASSCRED ¥ª¥×¥·¥ç¥ó¤òÍ­¸ú¤Ë¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£

¥¨¥é¡¼

ENOMEM
¥á¥â¥ê¤¬Â­¤ê¤Ê¤¤¡£
ECONNREFUSED
listen ¾õÂ֤ˤʤ¤¥½¥±¥Ã¥È¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ connect(2) ¤¬¸Æ¤Ð¤ì¤¿¡£¥ê¥â¡¼¥È¥½¥±¥Ã¥È¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤«¤Ã¤¿¡¢ ¥Õ¥¡¥¤¥ë̾¤¬¥½¥±¥Ã¥È¤Ç¤Ï¤Ê¤«¤Ã¤¿¡¢¤Ê¤É¤Î¤È¤­¤Ëµ¯¤³¤ë¡£
EINVAL
ÅϤ·¤¿°ú¿ô¤¬ÉÔÀµ¡£¤è¤¯¤¢¤ë¸¶°ø¤Ï¡¢ ÅϤ·¤¿¥¢¥É¥ì¥¹¤Î sun_type ¥Õ¥£¡¼¥ë¥É¤Ë AF_UNIX ¤òÀßÄꤷ¤Ê¤«¤Ã¤¿¡¢ ¹Ô¤ª¤¦¤È¤·¤¿Áàºî¤ËÂФ·¤Æ¥½¥±¥Ã¥È¤Î¾õÂÖ¤¬Í­¸ú¤Ç¤Ï¤Ê¤«¤Ã¤¿¡¢¤Ê¤É¡£
EOPNOTSUPP
¥¹¥È¥ê¡¼¥à»Ø¸þ¤Ç¤Ê¤¤¥½¥±¥Ã¥È¤ËÂФ·¤Æ¥¹¥È¥ê¡¼¥àÁàºî¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¡£ ¤Þ¤¿¤ÏÂÓ°è³°¥Ç¡¼¥¿¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤è¤¦¤È¤·¤¿¡£
EPROTONOSUPPORT
ÅϤµ¤ì¤¿¥×¥í¥È¥³¥ë¤¬ PF_UNIX ¤Ç¤Ê¤¤¡£
ESOCKTNOSUPPORT
̤ÃΤΥ½¥±¥Ã¥È¥¿¥¤¥×¡£
EPROTOTYPE
¥ê¥â¡¼¥È¥½¥±¥Ã¥È¤È¥í¡¼¥«¥ë¥½¥±¥Ã¥È¤Î¥¿¥¤¥×¤¬°ìÃפ·¤Æ¤¤¤Ê¤«¤Ã¤¿ (SOCK_DGRAM ¤È SOCK_STREAM)¡£
EADDRINUSE
ÁªÂò¤·¤¿¥½¥±¥Ã¥È¤¬´û¤ËÍѤ¤¤é¤ì¤Æ¤¤¤¿¡£¤Þ¤¿¤Ï¡¢ ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥½¥±¥Ã¥È¥ª¥Ö¥¸¥§¥¯¥È¤¬´û¤Ë¸ºß¤·¤Æ¤¤¤¿¡£
EISCONN
´û¤ËÀܳ¤µ¤ì¤Æ¤¤¤ë¥½¥±¥Ã¥È¤ËÂФ·¤Æ connect(2) ¤¬¸Æ¤Ð¤ì¤¿¡£¤Þ¤¿¤Ï¡¢»ØÄꤷ¤¿¥¿¡¼¥²¥Ã¥È¥¢¥É¥ì¥¹¤¬ ´û¤ËÀܳºÑ¤ß¤Î¥½¥±¥Ã¥È¤À¤Ã¤¿¡£
ENOTCONN
¥½¥±¥Ã¥ÈÁàºî¤Ë¥¿¡¼¥²¥Ã¥È¥¢¥É¥ì¥¹¤¬É¬ÍפÀ¤¬¡¢ ¤³¤Î¥½¥±¥Ã¥È¤ÏÀܳ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
ECONNRESET
¥ê¥â¡¼¥È¥½¥±¥Ã¥È¤¬Í½´ü¤·¤Ê¤¤¤«¤¿¤Á¤Ç¥¯¥í¡¼¥º¤µ¤ì¤¿¡£
EPIPE
¥ê¥â¡¼¥È¥½¥±¥Ã¥È¤¬¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¾å¤Ç¥¯¥í¡¼¥º¤µ¤ì¤¿¡£ ²Äǽ¤Ê¾ì¹ç¤Ï SIGPIPE ¤âƱ»þ¤ËÁ÷¤é¤ì¤ë¡£¤³¤ì¤òÈò¤±¤ë¤Ë¤Ï MSG_NOSIGNAL ¥Õ¥é¥°¤ò sendmsg(2) ¤ä recvmsg(2) ¤ËÅϤ¹¡£
EFAULT
¥æ¡¼¥¶¡¼¥á¥â¥ê¥¢¥É¥ì¥¹¤¬ÉÔÀµ¡£
EPERM
Á÷¿®¼Ô¤¬ struct ucred ¤ËÉÔÀµ¤Ê¿®Ç¤¾õ¤òÅϤ·¤¿¡£

¾¤Ë¤âÈÆÍѤΥ½¥±¥Ã¥ÈÁؤǥ¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¤ê¡¢ ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¾å¤Ë¥½¥±¥Ã¥È¥ª¥Ö¥¸¥§¥¯¥È¤òºî¤í¤¦¤È¤·¤¿¾ì¹ç¤Ë ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥¨¥é¡¼¤¬µ¯¤³¤ë¤³¤È¤¬¤¢¤ë¡£ ¤½¤ì¤¾¤ì¤Î¾ÜºÙ¤ÏŬÀÚ¤Ê man ¥Ú¡¼¥¸¤ò»²¾È¤¹¤ë¤³¤È¡£

¥Ð¡¼¥¸¥ç¥ó

SCM_CREDENTIALS ¤ÈÃê¾Ý̾Á°¶õ´Ö¤Ï¡¢Linux 2.2 ¤ÇƳÆþ¤µ¤ì¤¿¡£ °Ü¿¢À­¤¬É¬Í×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï»È¤¦¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£ (BSD ͳÍè¤Î¥·¥¹¥Æ¥à¤ÎÃæ¤Ë¤â¿®Ç¤¾õ¤ÎÁ÷¼õ¿®¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ë¤¬¡¢ ¤½¤Î¼ÂÁõ¤Î¾ÜºÙ¤Ï¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë)

Ãí°Õ

Linux ¤Î¼ÂÁõ¤Ç¤Ï¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¾å¤«¤é¸«¤¨¤ë¥½¥±¥Ã¥È¤Ï¡¢ ¤½¤ì¤é¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤Ë½¾¤¦¡£ ¥½¥±¥Ã¥È¤Î½êÍ­¼Ô¡¢¥°¥ë¡¼¥×¡¢¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ÏÊѹ¹¤Ç¤­¤ë¡£ ¿·¤·¤¤¥½¥±¥Ã¥È¤òºî¤ë¤È¤­¡¢ºî¤í¤¦¤È¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ËÂФ·¤Æ ¥×¥í¥»¥¹¤¬½ñ¤­¹þ¤ß¤È¸¡º÷ (¼Â¹Ô) ¸¢¸Â¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ºîÀ®¤Ë¼ºÇÔ¤¹¤ë¡£ ¥½¥±¥Ã¥È¥ª¥Ö¥¸¥§¥¯¥È¤ËÀܳ¤¹¤ë¤Ë¤Ï¡¢ read/write ¸¢¸Â¤¬É¬ÍפǤ¢¤ë¡£ ¤³¤ÎÆ°ºî¤Ï¡¢Â¿¤¯¤Î BSD ͳÍè¤Î¥·¥¹¥Æ¥à¤È¤Ï°Û¤Ê¤Ã¤Æ¤¤¤ë (BSD ¤Ç¤Ï Unix ¥½¥±¥Ã¥È¤ËÂФ·¤Æ¤Ï¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ò̵»ë¤¹¤ë)¡£ °Ü¿¢À­¤ÎɬÍ×¤Ê¥×¥í¥°¥é¥à¤Ç¤Ï¡¢ ¥»¥­¥å¥ê¥Æ¥£¤ò¤³¤Î»ÅÍͤ˰͸¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£

¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Æ¥½¥±¥Ã¥È¤Ë¥Ð¥¤¥ó¥É¤¹¤ë¤È¡¢ ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¥½¥±¥Ã¥È¤¬À¸À®¤µ¤ì¤ë¡£ ¤³¤ì¤ÏɬÍפʤ¯¤Ê¤Ã¤¿¤È¤­¤Ë¸Æ¤Ó¤À¤·¤¿¥æ¡¼¥¶¡¼¤¬ºï½ü¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ (unlink(2) ¤òÍѤ¤¤ë)¡£ Unix ¤ÇÄ̾ï»È¤ï¤ì¤ë¡ÖÇظå¤ÇÊĤ¸¤ëÊý¼°¡×¤¬Å¬ÍѤµ¤ì¤ë¡£ ¥½¥±¥Ã¥È¤Ï¤¤¤Ä¤Ç¤â unlink ¤¹¤ë¤³¤È¤¬¤Ç¤­¡¢ºÇ¸å¤Î»²¾È¤¬ ¥¯¥í¡¼¥º¤µ¤ì¤¿¤È¤­¤Ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤«¤éºï½ü¤µ¤ì¤ë¡£

SOCK_STREAM ¾å¤Ç¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ä¿®Ç¤¾õ¤òÅϤ¹¤¿¤á¤Ë¤Ï¡¢ Ʊ¤¸ sendmsg(2) ¤ä recvmsg(2) ¥³¡¼¥ë¤ÇÊä½õ¥Ç¡¼¥¿°Ê³°¤Î¥Ç¡¼¥¿¤ò¾¯¤Ê¤¯¤È¤â 1 ¥Ð¥¤¥ÈÁ÷¿®/¼õ¿®¤¹¤ëɬÍפ¬¤¢¤ë¡£

Unix ¥É¥á¥¤¥ó¤Î¥¹¥È¥ê¡¼¥à¡¦¥½¥±¥Ã¥È¤Ç¤Ï¡¢ ÂÓ°è³°¥Ç¡¼¥¿¤Î³µÇ°¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Ê¤¤¡£

Îã

bind(2) »²¾È¡£

´ØÏ¢¹àÌÜ

recvmsg(2), sendmsg(2), socket(2), socketpair(2), cmsg(3), capabilities(7), socket(7)