msgget

Autres langues

Langue: ja

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

Section: 2 (Appels système)

̾Á°

msgget - ¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¼±Ê̻Ҥò¼èÆÀ¤¹¤ë

½ñ¼°


#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/msg.h>

int msgget(key_t key, int msgflg);

ÀâÌÀ

msgget() ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï key °ú¤­¿ô¤ÎÃͤËÂбþ¤¹¤ë¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¼±Ê̻ҤòÊÖ¤¹¡£ key ¤ÎÃͤ¬ IPC_PRIVATE ¤Î¾ì¹ç¡¢¤Þ¤¿¤Ï key ¤¬ IPC_PRIVATE ¤Ç¤Ê¤¯¤Æ¤â¡¢ key ¤ËÂбþ¤¹¤ë¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬Â¸ºß¤»¤º¡¢ msgflg ¤Ë IPC_CREAT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢ ¿·¤·¤¤¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬ºîÀ®¤µ¤ì¤ë¡£

msgflg ¤Ë IPC_CREAT ¤È IPC_EXCL ¤ÎξÊý¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢ key ¤ËÂбþ¤¹¤ë¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬´û¤Ë¸ºß¤¹¤ë¤È¡¢ msgget() ¤Ï¼ºÇÔ¤·¡¢ errno ¤Ë EEXIST ¤¬ÀßÄꤵ¤ì¤ë¡£ (¤³¤ì¤Ï open(2) ¤Ë O_CREAT | O_EXCL ¤ò»ØÄꤷ¤¿¾ì¹ç¤ÎÆ°ºî¤ÈƱ¤¸¤Ç¤¢¤ë)

¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ÎºîÀ®»þ¤Ë¡¢ msgflg °ú¤­¿ô¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤Ï¡¢ ¤½¤Î¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥¢¥¯¥»¥¹µö²Ä¤ÎÄêµÁ¤È¤·¤Æ»ÈÍѤµ¤ì¤ë¡£ ¤³¤ì¤é¤Îµö²Ä¥Ó¥Ã¥È¤Ï open(2) ¤Î°ú¤­¿ô mode ¤ÈƱ¤¸·Á¼°¤ÇƱ¤¸°ÕÌ£¤Ç¤¢¤ë¡£ ¤ä creat(2) ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Î¥¢¥¯¥»¥¹µö²Ä¥Ñ¥é¥á¡¼¥¿¤ÈƱ¤¸·Á¼°¤Ç¡¢Æ±¤¸°ÕÌ£¤ò»ý¤Ä¡£ (⤷¡¢¼Â¹Ô (execute) µö²Ä¤Ï»ÈÍѤµ¤ì¤Ê¤¤¡£)

¿·µ¬¤Î¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤òºîÀ®¤¹¤ëºÝ¡¢ msgget() ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥Ç¡¼¥¿¹½Â¤ÂÎ msqid_ds ¤ò°Ê²¼¤Î¤è¤¦¤Ë½é´ü²½¤¹¤ë (msqid_ds ¤Ë¤Ä¤¤¤Æ¤Ï msgctl(2) ¤ò»²¾È):

msg_perm.cuid ¤È msg_perm.uid ¤Ë¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¼Â¸ú (effective) ¥æ¡¼¥¶¡¼ID ¤òÀßÄꤹ¤ë¡£
msg_perm.cgid ¤È msg_perm.gid ¤Ë¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¼Â¸ú (effective) ¥°¥ë¡¼¥×ID ¤òÀßÄꤹ¤ë¡£
msg_perm.mode ¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤Ï msgflg ¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤òÀßÄꤹ¤ë¡£
msg_qnum, msg_lspid, msg_lrpid, msg_stime, msg_rtime ¤Ë 0 ¤òÀßÄꤵ¤ì¤ë¡£
msg_ctime ¤Ë¸½ºß¤Î»þ¹ï¤òÀßÄꤹ¤ë¡£
msg_qbytes ¤Ë¡¢¥·¥¹¥Æ¥à¤Ç·è¤á¤é¤ì¤¿¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ÎºÇÂ祵¥¤¥º MSGMNB ¤òÀßÄꤹ¤ë¡£

¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¾ì¹ç¤Ï¡¢¥¢¥¯¥»¥¹µö²Ä¤Î¸¡ºº¤È¡¢ ÇË´þ (destruction) ¥Þ¡¼¥¯¤¬¤Ê¤¤¤«¤Î³Îǧ¤¬¹Ô¤ï¤ì¤ë¡£

ÊÖ¤êÃÍ

À®¸ù¤·¤¿¾ì¹ç¡¢ÊÖ¤êÃͤϥá¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¼±ÊÌ»Ò (ÈóÉé¤ÎÀ°¿ô) ¤È¤Ê¤ë¡£ ¼ºÇÔ¤·¤¿¾ì¹ç¤Ï -1 ¤¬ÊÖ¤µ¤ì¡¢ errno ¤Ë¤½¤Î¥¨¥é¡¼¤¬¼¨¤µ¤ì¤ë¡£

¥¨¥é¡¼

¼ºÇÔ¤·¤¿¾ì¹ç¡¢ errno ¤Ë°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«°ì¤Ä¤¬ÀßÄꤵ¤ì¤ë:
EACCES
key ¤ËÂбþ¤¹¤ë¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Ï¸ºß¤¹¤ë¤¬¡¢ ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ï¤½¤Î¥­¥å¡¼¤ËÂФ¹¤ë¥¢¥¯¥»¥¹µö²Ä¤¬¤Ê¤¯¡¢ CAP_IPC_OWNER ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£
EEXIST
key ¤ËÂбþ¤¹¤ë¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬Â¸ºß¤·¡¢ msgflg ¤Ë IPC_CREAT ¤È IPC_EXCL ¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¡£
ENOENT
key ¤ËÂбþ¤¹¤ë¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬Â¸ºß¤»¤º¡¢ msgflg ¤Ë IPC_CREAT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£
ENOMEM
¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤òºîÀ®¤·¤è¤¦¤È¤·¤¿¤¬¡¢¿·¤·¤¤¥Ç¡¼¥¿¹½Â¤ÂΤòºîÀ® ¤¹¤ë¤Î¤Ë½½Ê¬¤Ê¥á¥â¥ê¤¬¥·¥¹¥Æ¥à¤Ë¸ºß¤·¤Ê¤¤¡£
ENOSPC
¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤òºîÀ®¤·¤è¤¦¤È¤·¤¿¤¬¡¢ºîÀ®¤¹¤ë¤È ¥·¥¹¥Æ¥àÁ´ÂΤΥá¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¿ô¤ÎºÇÂçÃÍ (MSGMNI) ¤òĶ¤¨¤Æ¤·¤Þ¤¦¡£

½àµò

SVr4, POSIX.1-2001.

Ãí°Õ

IPC_PRIVATE ¤Ï¥Õ¥é¥°¤Ç¤Ï¤Ê¤¯¡¢ key_t ·¿¤Ç¤¢¤ë¡£ ¤³¤ÎÆÃÊ̤ÊÃͤ¬ key ¤È¤·¤Æ»ÈÍѤµ¤ì¤¿¾ì¹ç¡¢ msgget() ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï msgflg ¤Î²¼°Ì 9 ¥Ó¥Ã¥È°Ê³°¤ÎÁ´¤Æ¤ò̵»ë¤·¤Æ (À®¸ù¤·¤¿¾ì¹ç¤Ï) ¿·¤·¤¤¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤òºîÀ®¤¹¤ë¡£

msgget() ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ë±Æ¶Á¤òµÚ¤Ü¤¹¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î»ñ¸»¤Î ¥·¥¹¥Æ¥à¤È¤·¤Æ¤ÎÀ©¸Â¤ò°Ê²¼¤Ë¼¨¤¹:

MSGMNI
¥·¥¹¥Æ¥àÁ´ÂΤΥá¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¿ô¤ÎºÇÂçÃÍ: Êý¿Ë°Í¸ (Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃÍ¤Ï /proc/sys/kernel/msgmni ·Ðͳ¤Ç»²¾È¤·¤¿¤ê¡¢Êѹ¹¤·¤¿¤ê¤Ç¤­¤ë)¡£

Linux ¤Ç¤ÎÃí°Õ

Linux 2.3.20 ¤Þ¤Ç¤Ï¡¢ºï½ü¤¬Í½Äꤵ¤ì¤Æ¤¤¤ë¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÂФ·¤Æ msgget() ¤ò¹Ô¤¦¤È EIDRM ¤¬¥¨¥é¡¼¤È¤·¤ÆÊÖ¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤¿¡£

¥Ð¥°

IPC_PRIVATE ¤È¤¤¤¦Ì¾Á°¤òÁª¤ó¤À¤Î¤Ï¤ª¤½¤é¤¯¼ºÇԤǤ¢¤í¤¦¡£ IPC_NEW ¤ÎÊý¤¬¤è¤êÌÀ³Î¤Ë¤½¤Îµ¡Ç½¤òɽ¤·¤Æ¤¤¤ë¤À¤í¤¦¡£

´ØÏ¢¹àÌÜ

msgctl(2), msgrcv(2), msgsnd(2), ftok(3), capabilities(7), mq_overview(7), svipc(7)