sockatmark

Autres langues

Langue: ja

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

Section: 3 (Bibliothèques de fonctions)

̾Á°

sockatmark - ¤É¤Î¥½¥±¥Ã¥È¤ËÂÓ°è³° (out-of-band) ¥Þ¡¼¥¯¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤«¤òÄ´¤Ù¤ë

½ñ¼°

#include <sys/socket.h>

int sockatmark(int fd);

ÀâÌÀ

sockatmark() ¤Ï¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤Ç»²¾È¤µ¤ì¤ë¥½¥±¥Ã¥È¤ËÂÓ°è³°¥Þ¡¼¥¯¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤«Èݤ«¤òÊÖ¤¹¡£ ¥½¥±¥Ã¥È¤Ë¥Þ¡¼¥¯¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢1 ¤¬ÊÖ¤µ¤ì¤ë¡£ ¥½¥±¥Ã¥È¤Ë¥Þ¡¼¥¯¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢0 ¤¬ÊÖ¤µ¤ì¤ë¡£ ¤³¤Î´Ø¿ô¤ÏÂÓ°è³°¥Þ¡¼¥¯¤òºï½ü¤·¤Ê¤¤¡£

ÊÖ¤êÃÍ

sockatmark() ¤Î¸Æ¤Ó½Ð¤·¤¬À®¸ù¤·¤¿¾ì¹ç¡¢¥½¥±¥Ã¥È¤ËÂÓ°è³°¥Þ¡¼¥¯¤¬ ÉÕ¤±¤é¤ì¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢ÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤¹¡£ ¥¨¥é¡¼¤Î¾ì¹ç¤Ï -1 ¤¬ÊÖ¤µ¤ì¡¢¥¨¥é¡¼¤òɽ¤¹ errno ¤¬ÀßÄꤵ¤ì¤ë¡£

¥¨¥é¡¼

EBADF
fd ¤¬Í­¸ú¤Ê¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤Ê¤¤¡£
EINVAL
fd ¤Ï sockatmark() ¤¬Å¬ÍѤǤ­¤Ê¤¤¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤¢¤ë¡£

¥Ð¡¼¥¸¥ç¥ó

sockatmark() ¤Ï glibc ¥Ð¡¼¥¸¥ç¥ó 2.2.4 ¤ÇÄɲ䵤줿¡£

½àµò

POSIX.1-2001

Ãí°Õ

sockatmark() ¤¬ 1 ¤òÊÖ¤¹¾ì¹ç¡¢ÂÓ°è³°¥Ç¡¼¥¿¤Ï MSG_OOB ¤ò»ØÄꤷ¤¿ recv(2) ¤ÇÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤ë¡£

ÂÓ°è³°¥Ç¡¼¥¿¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¥×¥í¥È¥³¥ë¤Ç¤·¤« ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£

sockatmark() ¤Ï SIGURG ¥·¥°¥Ê¥ë¤Î¥Ï¥ó¥É¥é¤«¤é°ÂÁ´¤Ë¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤ë¡£

sockatmark() ¤Ï SIOCATMARK ioctl(2) Áàºî¤ò»È¤Ã¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¡£

¥Ð¥°

glibc 2.4 ¤è¤êÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢ sockatmark() ¤ÏÆ°ºî¤·¤Ê¤¤¡£

Îã

°Ê²¼¤Î¥³¡¼¥É¤Ï¡¢SIGURG ¥·¥°¥Ê¥ë¤ò¼õ¤±¼è¤Ã¤¿¸å¤Ë ¥Þ¡¼¥¯¤Þ¤Ç¤ÎÁ´¤Æ¤Î¥Ç¡¼¥¿¤òÆɤ߹þ¤ó¤Ç (ÇË´þ¤·)¡¢ ¥Þ¡¼¥¯¤µ¤ì¤¿¥Ç¡¼¥¿¤Î¥Ð¥¤¥È¤òÆɤ߹þ¤à¤Î¤Ë»ÈÍѤǤ­¤ë¡£



    char buf[BUF_LEN];

    char oobdata;

    int atmark, s;



    for (;;) {

        atmark = sockatmark(fd);

        if (atmark == -1) {

            perror("sockatmark");

            break;

        }



        if (atmark)

            break;



        s = read(fd, buf, BUF_LEN) <= 0);

        if (s == -1)

            perror("read");

        if (s <= 0)

            break;

    }



    if (atmark == 1) {

        if (recv(fd, &oobdata, 1, MSG_OOB) == -1) {

            perror("recv");

            ...

        }

    }

´ØÏ¢¹àÌÜ

fcntl(2), recv(2), send(2), tcp(7)