Home :: International :: Manuals :: Howto :: FAQ :: Man Pages :: Email Login

 
 

 

MSGOP

Section: Linux Programmer's Manual (2)
Updated: 10 July 2000
Index Return to Main Contents
 

̾Á°

msgop - ¥á¥Ã¥»¡¼¥¸(message)Áàºî  

½ñ¼°

# include <sys/types.h>

# include <sys/ipc.h>
# include <sys/msg.h>

int msgsnd ( int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg )

ssize_t msgrcv ( int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg )  

ÀâÌÀ

¥á¥Ã¥»¡¼¥¸(message)¤òÁ÷¤Ã¤¿¤ê¼õ¤±¤¿¤ê¤¹¤ë¤¿¤á¤Ë ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ï°Ê²¼¤Î¤è¤¦¤Ê¹½Â¤ÂΤò³ä¤êÅö¤Æ¤ë¡£

       struct msgbuf {
               long    mtype;   /* message type, must be > 0 */

               char    mtext[1];        /* message data */

       };

¤·¤«¤·¡¢ÇÛÎó
mtext ¤ÎÂ礭¤µ msgsz ¤ÏÈóÉé¤ÎÀ°¿ô¤Ç¤Ê¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¹½Â¤ÂΤΥá¥ó¥Ð¡¼ mtype ¤Ï¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¤È¤ë¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ¥á¥Ã¥»¡¼¥¸¤òÁªÂò¤Ç¤­¤ë¤è¤¦¤Ë ¸·Ì©¤ËÀµ¤ÎÀ°¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£( msgrcv ¤ÎÃÊÍî¤ò¸«¤è¡£)

¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ï¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¤¿¤á¤Ë¤Ï¥­¥å¡¼(queue)¤Ø¤Î ½ñ¤­¹þ¤ßµö²Ä¤ò¡¢¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¤ë¤¿¤á¤Ë¤Ï¥­¥å¡¼¤Ø¤ÎÆÉ¤ß¹þ¤ßµö²Ä¤ò »ý¤¿¤Ê¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

msgsnd ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï msgp °ú¤­¿ô¤Ç»ØÄꤵ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤Î¥³¥Ô¡¼¤ò msqid °ú¤­¿ô¤ÎÃͤǻØÄꤵ¤ì¤¿¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ØÆþ¤ì¤ë¡£

msgflg °ú¤­¿ô¤Ï¡¢¿·¤·¤¤¥á¥Ã¥»¡¼¥¸¤ò¥­¥å¡¼¤ËÆþ¤ì¤ë¤Î¤Ë¥­¥å¡¼¤Ë msg_qbytes ¤è¤ê¿¤¯¤¬É¬Íפʾì¹ç¤Îưºî¤ò»ØÄꤹ¤ë¡£ IPC_NOWAIT ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¥á¥Ã¥»¡¼¥¸¤ÏÁ÷¤é¤ì¤º¡¢¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï¼ºÇÔ¤·¤Æ errno ¤Ë EAGAIN ¤òÀßÄꤷ¤ÆÊÖ¤µ¤ì¤ë¡£¤½¤¦¤Ç¤Ê¤ì¤Ð¡¢¤½¤Î¤è¤¦¤Ê¾õ¶·¤¬¤Ê¤¯¤Ê¤ë¤«¡¢ ¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤ë¤«¡¢¥×¥í¥»¥¹¤¬Êá³Í(catch)¤¹¤Ù¤­¥·¥°¥Ê¥ë(signal)¤ò ¼õ¤±¤ë¤Þ¤Ç¡¢¥×¥í¥»¥¹(process)¤Î¼Â¹Ô¤òÄä»ß(suspend)¤¹¤ë¡£ (Ää»ß¤¹¤ë¤è¤¦¤Ê¾õ¶·¤¬¤Ê¤¯¤Ê¤ì¤Ð¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤Æ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï À®¸ù¤¹¤ë¡¢¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¾ì¹ç¤Ï¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï¼ºÇÔ¤· errno ¤Ë EIDRM ¤¬ÀßÄꤵ¤ì¤ë¡¢¥·¥°¥Ê¥ë¤ò¼õ¤±¤È¤Ã¤¿¾ì¹ç¤Ï¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï¼ºÇÔ¤· errno ¤Ë EINTR ¤¬ÀßÄꤵ¤ì¤ë¡£)

´°Á´¤ËÀ®¸ù¤·¤¿¾ì¹ç¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¡¦¥Ç¡¼¥¿¹½Â¤ÂΤϰʲ¼¤Î¤è¤¦¤Ë ¹¹¿·¤µ¤ì¤ë:

msg_lspid ¤Ë¤Ï¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹ ID ¤¬ÀßÄꤵ¤ì¤ë¡£
msg_qnum ¤Ï 1 Áý²Ã¤¹¤ë¡£
msg_stime ¤Ë¤Ï¸½ºß»þ¹ï¤¬ÀßÄꤵ¤ì¤ë¡£

msgrcv ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï msqid ¤Ç»ØÄꤷ¤¿¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤«¤é msgp °ú¤­¿ô¤Ë¤è¤Ã¤Æ»ØÄꤵ¤ì¤¿ msgbuf ¹½Â¤ÂΤؤȥá¥Ã¥»¡¼¥¸¤òÆÉ¤ß¤È¤ê¡¢À®¸ù¤·¤¿¾ì¹ç¤Ë¤Ï¡¢¥­¥å¡¼¤«¤éÆÉ¤ó¤À ¥á¥Ã¥»¡¼¥¸¤òºï½ü¤¹¤ë¡£

msgsz °ú¤­¿ô¤Ë¤Ï msgp °ú¤­¿ô¤Ç»ØÄꤵ¤ì¤¿¹½Â¤ÂΤΠmtext ¥á¥ó¥Ð¡¼¤ÎºÇÂç¤Î¥Ð¥¤¥È¿ô¤ò»ØÄꤹ¤ë¡£ ¤â¤·¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÎŤµ¤¬ msgsz ¤è¤êÂ礭¤¤¾ì¹ç¤Ë¤Ï¡¢ msgflg ¤Ë MSG_NOERROR ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ì¤Ð¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÏÀÚ¤êµÍ¤á¤é¤ì¤ë¡¢ ¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¥á¥Ã¥»¡¼¥¸¤Ï¥­¥å¡¼¤«¤éºï½ü¤µ¤ì¤º¡¢ ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï¼ºÇÔ¤· errno ¤Ë E2BIG ¤¬ÀßÄꤵ¤ì¤ë¡£

msgtyp °ú¤­¿ô¤ÏÍ׵ᤷ¤¿¥á¥Ã¥»¡¼¥¸¤Î·¿(type)¤ò°Ê²¼¤Î¤è¤¦¤ËÍ¿¤¨¤ë:

msgtyp ¤¬ 0 ¤Ê¤é¤Ð¡¢¥­¥å¡¼¤ÎºÇ½é¤Ë¤¢¤ë¥á¥Ã¥»¡¼¥¸¤¬ÆÉ¤ß¹þ¤Þ¤ì¤ë¡£
msgtyp ¤¬ 0 ¤è¤êÂ礭¤±¤ì¤Ð¡¢ msgflg ¤Ë MSG_EXCEPT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¥­¥å¡¼¤ÎºÇ½é¤Î msgtyp ·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬ÆÉ¤ß¹þ¤Þ¤ì¤ë¡£ MSG_EXCEPT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¾ì¹ç¤Ï¥­¥å¡¼¤ÎºÇ½é¤Î msgtyp ·¿°Ê³°¤Î¥á¥Ã¥»¡¼¥¸¤¬ÆÉ¤ß¹þ¤Þ¤ì¤ë¡£
msgtyp ¤¬ 0 ¤è¤ê¾®¤µ¤±¤ì¤Ð¡¢ msgtyp ¤ÎÀäÂÐÃͰʲ¼¤ÎºÇ¤â¾®¤µ¤¤·¿¤ò»ý¤Ä¥­¥å¡¼¤ÎºÇ½é¤Î¥á¥Ã¥»¡¼¥¸¤¬ÆÉ¤ß¹þ¤Þ¤ì¤ë¡£

msgflg °ú¤­¿ô¤Ë¤Ï°Ê²¼¤Î¥Õ¥é¥°¤ò 0, 1, Ê£¿ô¤ò(¤½¤ì¤é¤Î OR¤Ç)Í¿¤¨¤ë:

IPC_NOWAIT ¥­¥å¡¼¤ËÍ׵ᤵ¤ì¤¿·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¤¿¤À¤Á¤ËÊ֤롣 ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï¼ºÇÔ¤· errno ¤Ë¤Ï ENOMSG ¤¬ÀßÄꤵ¤ì¤ë¡£
MSG_EXCEPT 0 ¤è¤êÂ礭¤Ê msgtyp ¤È°ì½ï¤Ë»ÈÍѤ·¤Æ¡¢ ¥­¥å¡¼¤ÎºÇ½é¤Î msgtyp °Ê³°¤Î¥á¥Ã¥»¡¼¥¸¤òÆÉ¤à¡£
MSG_NOERROR msgsz ¥Ð¥¤¥È¤è¤ê¤âŤ«¤Ã¤¿¾ì¹ç¤Ï¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤òÀÚ¤êµÍ¤á¤ë¡£

Í׵ᤵ¤ì¤¿·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬Â¸ºß¤»¤º¡¢ msgflg ¤Ë IPC_NOWAIT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¾ì¹ç¡¢°Ê²¼¤Î¾õ¶·¤¬µ¯¤­¤ë¤Þ¤Ç¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ï Ää»ß(block)¤¹¤ë:

µá¤á¤Æ¤¤¤ë·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬¥­¥å¡¼¤ØÆþ¤ì¤é¤ì¤¿¡£
¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬¥·¥¹¥Æ¥à¤«¤éºï½ü¤µ¤ì¤¿¡£ ¤³¤Î¾ì¹ç¤Ï¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï¼ºÇÔ¤· errno ¤Ë EIDRM ¤¬ÀßÄꤵ¤ì¤ë¡£
¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬Êá³Í¤¹¤Ù¤­¥·¥°¥Ê¥ë¤ò¼õ¤±¤¿¡£ ¤³¤Î¾ì¹ç¤Ï¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï¼ºÇÔ¤·¡¢ errno ¤Ë EINTR ¤¬ÀßÄꤵ¤ì¤ë¡£

´°Á´¤ËÀ®¸ù¤·¤¿¾ì¹ç¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¡¦¥Ç¡¼¥¿¹½Â¤ÂΤϰʲ¼¤Î¤è¤¦¤Ë ¹¹¿·¤µ¤ì¤ë:

msg_lrpid ¤Ë¤Ï¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹ ID ¤¬ÀßÄꤵ¤ì¤ë¡£
msg_qnum ¤Ï 1 ¸º¾¯¤µ¤»¤é¤ì¤ë¡£
msg_rtime ¤Ë¤Ï¸½ºß»þ¹ï¤¬ÀßÄꤵ¤ì¤ë¡£
 

ÊÖ¤êÃÍ

¼ºÇÔ¤·¤¿¾ì¹ç¤Ë¤Ï¤É¤Á¤é¤Î´Ø¿ô¤â -1 ¤òÊÖ¤·¡¢¥¨¥é¡¼¤ò errno ¤Ë»Ø¼¨¤¹¤ë¡£¤½¤¦¤Ç¤Ê¤ì¤Ð msgsnd ¤Ï 0 ¤òÊÖ¤·¡¢ msgrvc ¤Ï ¼ÂºÝ¤Ë mtext ÇÛÎó¤Ë ¥³¥Ô¡¼¤·¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£  

¥¨¥é¡¼

msgsnd ¤¬¼ºÇÔ¤·¤¿¾ì¹ç¤Ë¤Ï errno ¤Ë°Ê²¼¤ÎÃͤΤɤ줫¤òÀßÄꤷ¤ÆÊÖ¤µ¤ì¤ë:
EAGAIN
msg_qbytes ¤¬¥­¥å¡¼¤Î¸Â³¦¤òͤ¨¤Æ¤ª¤ê mgsflg ¤Ë IPC_NOWAIT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¤¿¤á¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¤³¤È¤¬¤Ç¤­¤Ê¤«¤Ã¤¿¡£
EACCES
¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÂФ¹¤ë½ñ¤­¹þ¤ßµö²Ä¤ò »ý¤Ã¤Æ¤¤¤Ê¤¤¡£
EFAULT
msgp ¤¬»Ø¤·¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤¬¥¢¥¯¥»¥¹²Äǽ¤Ç¤Ê¤¤¡£
EIDRM
¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¡£
EINTR
¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¾õÂÖ¤òËþ¤¿¤¹¤¿¤á¤ËÄä»ß(sleep)¤·¤Æ¤¤¤ë»þ¤Ë¡¢ ¥×¥í¥»¥¹¤¬Êá³Í(catch)¤¹¤Ù¤­¥·¥°¥Ê¥ë¤ò¼õ¤±¤È¤Ã¤¿¡£
EINVAL
msqid ¤¬ÉÔŬÀÚ¤ÊÃͤǤ¢¤ë¤«¡¢ mtype ¤¬Àµ¤ÎÃͤǤʤ¤¤«¡¢ msgsz ¤¬ÉÔŬÀÚ¤ÊÃÍ(0 °Ê²¼¤«¡¢¥·¥¹¥Æ¥àÃͤΠMSGMAX ¤è¤ê¤âÂ礭¤¤¡£)
ENOMEM
msgbuf ¤Ë¥³¥Ô¡¼¤òºîÀ®¤¹¤ë¤¿¤á¤Î½½Ê¬¤Ê¥á¥â¥ê¤¬¥·¥¹¥Æ¥à¤Ë¸ºß¤·¤Ê¤¤¡£

msgrcv ¤¬¼ºÇÔ¤·¤¿¾ì¹ç¤Ë¤Ï errno ¤Ë°Ê²¼¤ÎÃͤΤɤ줫¤òÀßÄꤷ¤ÆÊÖ¤µ¤ì¤ë:

E2BIG
¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÎŤµ¤¬ msgsz ¤è¤ê¤âÂ礭¤¯¡¢ msgflg ¤Ë MSG_NOERROR ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£
EACCES
¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÂФ¹¤ë ÆÉ¤ß¹þ¤ßµö²Ä¤ò»ý¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¡£
EFAULT
msgp ¤¬»Ø¤·¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤¬¥¢¥¯¥»¥¹²Äǽ¤Ç¤Ê¤«¤Ã¤¿¡£
EIDRM
¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¤ë¤¿¤á¤Ë¥×¥í¥»¥¹¤¬Ää»ß(sleep)¤·¤Æ¤¤¤ë´Ö¤Ë¡¢ ¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¡£
EINTR
¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¤ë¤¿¤á¤Ë¥×¥í¥»¥¹¤¬Ää»ß(sleep)¤·¤Æ¤¤¤ë´Ö¤Ë¡¢ ¥×¥í¥»¥¹¤¬Êá³Í¤¹¤Ù¤­¥·¥°¥Ê¥ë¤ò¼õ¤±¤¿¡£
EINVAL
msgqid ¤¬ÉÔÀµ¤«¡¢ msgsz ¤¬ 0 ¤è¤ê¾®¤µ¤¤¡£
ENOMSG
msgflg ¤Ë IPC_NOWAIT ¤¬ÀßÄꤵ¤ì¤Æ¤ª¤ê¡¢ ¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÍ׵ᤵ¤ì¤¿·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬Â¸ºß¤·¤Ê¤«¤Ã¤¿¡£
 

Ãí°Õ

°Ê²¼¤Ï msgsnd ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ë±Æ¶Á¤¹¤ë¥·¥¹¥Æ¥àÀ©¸Â¤Ç¤¢¤ë:
MSGMAX
¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÎºÇÂ祵¥¤¥º: ¼ÂÁõ¤Ç 4080 ¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¡£
MSGMNB
¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥Ð¥¤¥È¡¦¥µ¥¤¥º¤Î¥Ç¥Õ¥©¥ë¥È¤ÎºÇÂ祵¥¤¥º: Êý¿Ë°Í¸¡£ ¥¹¡¼¥Ñ¡¼¡¦¥æ¡¼¥¶¡¼¤Ï msgctl ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ç¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥µ¥¤¥º¤ò MSGMNB ¤è¤ê¤âÂ礭¤¤ÃͤËÁý²Ã¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

¸½ºß¤Î¼ÂÁõ¤Ç¤Ï¡¢¥·¥¹¥Æ¥àÁ´ÂΤΥá¥Ã¥»¡¼¥¸¡¦¥Ø¥Ã¥À¡¼¤Î¿ô (MSGTQL) ¤È¡¢¥·¥¹¥Æ¥àÁ´ÂΤΥá¥Ã¥»¡¼¥¸¡¦¥×¡¼¥ë¤ÎºÇÂç¥Ð¥¤¥È¿ô (MSGPOOL) ¤Ë¸ÇÍ­¤Î¾å¸Â¤Ï¤Ê¤¤¡£

 

½àµò

SVr4, SVID.  

Ãí°Õ

¥Ý¥¤¥ó¥¿°ú¤­¿ô¤Ï libc4, libc5, glibc 2.0, glibc 2.1 ¤Ç¤Ï struct msgbuf * ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤ë¡£glibc 2.2 ¤Ç¤Ï SUSv2 ¤Ë½¾¤Ã¤Æ void * (msgsnd() ¤Ç¤Ï const void *) ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤ë¡£  

´ØÏ¢¹àÌÜ

ipc(5), msgctl(2), msgget(2), msgrcv(2), msgsnd(2)


 

Index

̾Á°
½ñ¼°
ÀâÌÀ
ÊÖ¤êÃÍ
¥¨¥é¡¼
Ãí°Õ
½àµò
Ãí°Õ
´ØÏ¢¹àÌÜ

 
 
 
 
Google
  Web Linuxinfor   
 

Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account

Document on this page is part of "Linuxinfor Man Pages in HTML Format: man2". See Index Page for more info about Authorship and Copyright.

1999-2008 Linuxinfor.com. No rights reserved.