Rechercher une page de manuel
msgctl
Langue: ja
Version: 2004-11-10 (openSuse - 09/10/07)
Section: 2 (Appels système)
̾Á°
msgctl - ¥á¥Ã¥»¡¼¥¸À©¸æÁàºî½ñ¼°
#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>
int msgctl(int msqid, int cmd, struct msqid_ds *buf);
ÀâÌÀ
msgctl() ¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¼±ÊÌ»Ò msqid ¤Ç»ØÄꤵ¤ì¤¿¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼ (message queue) ¤ËÂФ·¤Æ cmd ¤Ç»ØÄꤵ¤ì¤¿À©¸æÁàºî¤ò¹Ô¤Ê¤¦¡£msqid_ds ¥Ç¡¼¥¿¹½Â¤ÂÎ¤Ï <sys/msg.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
struct msqid_ds { struct ipc_perm msg_perm; /* ½ê͸¢¤Èµö²Ä */ time_t msg_stime; /* ºÇ¸å¤Î msgsnd(2) ¤Î»þ¹ï */ time_t msg_rtime; /* ºÇ¸å¤Î msgrcv(2) ¤Î»þ¹ï */ time_t msg_ctime; /* ºÇ¸å¤ËÊѹ¹¤¬¹Ô¤ï¤ì¤¿»þ¹ï */ unsigned long __msg_cbytes; /* ¥¥å¡¼¤Ë¤¢¤ë¸½ºß¤Î¥Ð¥¤¥È¿ô (ɸ½à¤Ç¤Ï¤Ê¤¤) */ msgqnum_t msg_qnum; /* ¥¥å¡¼¤Ë¤¢¤ë¸½ºßÆþ¤Ã¤Æ¤¤¤ë ¥á¥Ã¥»¡¼¥¸¤Î¿ô */ msglen_t msg_qbytes; /* ¥¥å¡¼¤Ëµö²Ä¤µ¤ì¤Æ¤¤¤ë ºÇÂç¥Ð¥¤¥È¿ô */ pid_t msg_lspid; /* ºÇ¸å¤Î msgsnd(2) ¤Î PID */ pid_t msg_lrpid; /* ºÇ¸å¤Î msgrcv(2) ¤Î PID */ };
ipc_perm ¹½Â¤ÂÎ¤Ï <sys/ipc.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë (¶¯Ä´¤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É¤Ï IPC_SET ¤ò»È¤Ã¤ÆÀßÄê²Äǽ¤Ç¤¢¤ë):
struct ipc_perm { key_t key; /* msgget(2) ¤ËÍ¿¤¨¤ë¥¡¼ */ uid_t uid; /* ½êͼԤμ¸ú UID */ gid_t gid; /* ½êͼԤμ¸ú GID */ uid_t cuid; /* ºîÀ®¼Ô¤Î¼Â¸ú UID */ gid_t cgid; /* ºîÀ®¼Ô¤Î¼Â¸ú GID */ unsigned short mode; /* µö²Ä */ unsigned short seq; /* ¥·¡¼¥±¥ó¥¹ÈÖ¹æ */ };
cmd ¤È¤·¤Æ͸ú¤ÊÃͤÏ:
- IPC_STAT
- msqid ¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¡¦¥Ç¡¼¥¿¹½Â¤ÂΤ«¤é¡¢¥Ý¥¤¥ó¥¿ buf ¤¬»Ø¤·¼¨¤¹ msqid_ds ¹½Â¤ÂΤ˾ðÊó¤ò¥³¥Ô¡¼¤¹¤ë¡£ ¸Æ¤Ó½Ð¤·Â¦¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤ËÂФ¹¤ëÆɤ߹þ¤ßµö²Ä¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
- IPC_SET
- ¥Ý¥¤¥ó¥¿ buf ¤¬»Ø¤·¼¨¤¹ msqid_ds ¹½Â¤ÂΤΥá¥ó¥Ð¡¼¤ÎÃͤò¡¢¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿ ¥«¡¼¥Í¥ë¡¦¥Ç¡¼¥¿¹½Â¤ÂΤ˽ñ¤¹þ¤ß¡¢ msg_ctime ¥á¥ó¥Ð¡¼¤â¹¹¿·¤¹¤ë¡£ ¹½Â¤ÂΤΥá¥ó¥Ð¡¼¤Î¤¦¤Á¡¢¹¹¿·¤µ¤ì¤ë¤â¤Î¤ò°Ê²¼¤Ë¼¨¤¹: msg_qbytes, msg_perm.uid, msg_perm.gid, msg_perm.mode (¤Î²¼°Ì 9 ¥Ó¥Ã¥È)¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤¬¡¢¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Î½êÍ¼Ô (msg_perm.uid) ¤Þ¤¿¤ÏºîÀ®¼Ô (msg_perm.cuid) ¤È°ìÃפ¹¤ë¤«¡¢¸Æ¤Ó½Ð¤·¸µ¤¬Æø¢¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ msg_qbytes ¤ò¥·¥¹¥Æ¥à¡¦¥Ñ¥é¥á¡¼¥¿¤Î MSGMNB ¤òĶ¤¨¤ÆÀßÄꤹ¤ë¤Ë¤Ï¡¢Å¬ÀÚ¤ÊÆø¢ (Linux ¤Ç¤Ï CAP_IPC_RESOURCE ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£ (capability)) ¤¬É¬ÍפǤ¢¤ë¡£
- IPC_RMID
- ¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤ò¤¿¤À¤Á¤Ëºï½ü¤¹¤ë¡£ Ʊ»þ¤Ë¤½¤Î¹½Â¤ÂΤÎÆɤ߽ñ¤¤ÎÂÔ¤Á¾õÂ֤ˤ¢¤Ã¤¿¥×¥í¥»¥¹¤ËÄÌÃΤ¹¤ë (¥¨¥é¡¼¤¬Ê֤ꡢ errno ¤¬ EIDRM ¤ËÀßÄꤵ¤ì¤ë)¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬Å¬ÀÚ¤ÊÆø¢¤ò»ý¤Ã¤Æ¤¤¤ë¤«¡¢ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤¬¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤ÎºîÀ®¼Ô¤« ½êͼԤμ¸ú¥æ¡¼¥¶ ID ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
- IPC_INFO (Linux ¸ÇÍ)
- ¥·¥¹¥Æ¥àÁ´ÂΤǤΥá¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤ÎÀ©¸Â¤È¥Ñ¥é¥á¡¼¥¿¤Ë´Ø¤¹¤ë¾ðÊó¤ò¡¢ buf ¤¬»Ø¤¹¹½Â¤ÂΤËÆþ¤ì¤ÆÊÖ¤¹¡£ ¤³¤Î¹½Â¤ÂÎ¤Ï msginfo ·¿¤Ç¤¢¤ë (¤½¤Î¤¿¤á¥¥ã¥¹¥È¤¬É¬ÍפǤ¢¤ë)¡£ msginfo ¤Ï _GNU_SOURCE µ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤¿¾ì¹ç¤Ë <sys/msg.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤ë:
struct msginfo { int msgpool; /* ¥á¥Ã¥»¡¼¥¸¡¦¥Ç¡¼¥¿¤ÎÊÝ»ý¤Ë»ÈÍѤµ¤ì¤ë ¥Ð¥Ã¥Õ¥¡¡¦¥×¡¼¥ë¤ÎÂ礤µ (¥Ð¥¤¥Èñ°Ì) */ int msgmap; /* ¥á¥Ã¥»¡¼¥¸¡¦¥Þ¥Ã¥×¤ÎºÇÂ票¥ó¥È¥ê¿ô; ̤»ÈÍÑ */ int msgmax; /* °ì¤Ä¤Î¥á¥Ã¥»¡¼¥¸¤Ë½ñ¤¹þ¤ß²Äǽ¤Ê ºÇÂç¥Ð¥¤¥È¿ô */ int msgmnb; /* °ì¤Ä¤Î¥¥å¡¼¤Ë½ñ¤¹þ¤ß²Äǽ¤ÊºÇÂç¥Ð¥¤¥È¿ô; (msgget(2) ¤Ç¤Î) ¥¥å¡¼ºîÀ®Ãæ¤Î msg_qbytes ¤Î½é´ü²½¤Ë»ÈÍѤµ¤ì¤ë */ int msgmni; /* ¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Î¿ô¤ÎºÇÂçÃÍ */ int msgssz; /* ¥á¥Ã¥»¡¼¥¸¡¦¥»¥°¥á¥ó¥È¤Î¥µ¥¤¥º; ̤»ÈÍÑ */ int msgtql; /* ¥·¥¹¥Æ¥à¾å¤ÎÁ´¥¥å¡¼¤ÎºÇÂç¥á¥Ã¥»¡¼¥¸¿ô; ̤»ÈÍÑ */ unsigned short int msgseg; /* ºÇÂ祻¥°¥á¥ó¥È¿ô; ̤»ÈÍÑ */ };
ÀßÄê msgmni , msgmax , msgmnb ¤Ï /proc ¤Ë¤¢¤ëƱ¤¸Ì¾Á°¤Î¥Õ¥¡¥¤¥ë·Ðͳ¤ÇÊѹ¹²Äǽ¤Ç¤¢¤ë¡£ ¾Ü¤·¤¯¤Ï proc(5) ¤ò»²¾È¡£ - MSG_INFO (Linux ¸ÇÍ)
- IPC_INFO ¤Î¤È¤¤ÈƱ¤¸¾ðÊó¤ò³ÊǼ¤·¤¿ msginfo ¹½Â¤ÂΤòÊÖ¤¹¡£ ⤷¡¢°Ê²¼¤Î¥Õ¥£¡¼¥ë¥É¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤¬ ¾ÃÈñ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à»ñ¸»¤Ë´Ø¤¹¤ë¾ðÊ󤬳ÊǼ¤µ¤ì¤ëÅÀ¤¬°Û¤Ê¤ë¡£ msgpool ¥Õ¥£¡¼¥ë¥É¤Ï¸½ºß¥·¥¹¥Æ¥à¾å¤Ë¸ºß¤¹¤ë¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Î¿ô¤òÊÖ¤¹¡£ msgmap ¥Õ¥£¡¼¥ë¥É¤Ï¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¥¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ë¥á¥Ã¥»¡¼¥¸Áí¿ô¤òÊÖ¤¹¡£ msgtql ¥Õ¥£¡¼¥ë¥É¤Ï¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¥¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ëÁ´¥á¥Ã¥»¡¼¥¸¤Î Áí¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£
- MSG_STAT (Linux ¸ÇÍ)
- IPC_STAT ¤ÈƱ¤¸¤¯ msqid_ds ¹½Â¤ÂΤòÊÖ¤¹¡£ ⤷¡¢ msqid °ú¤¿ô¤Ï¡¢¥¥å¡¼¼±Ê̻ҤǤϤʤ¯¡¢¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼ ¤Ë´Ø¤¹¤ë¾ðÊó¤ò´ÉÍý¤¹¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Ø¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤¢¤ë¡£
ÊÖ¤êÃÍ
À®¸ù¤¹¤ë¤È¡¢ IPC_STAT, IPC_SET, IPC_RMID ¤Ï 0 ¤òÊÖ¤¹¡£ IPC_INFO ¤È MSG_INFO Áàºî¤Ï¡¢À®¸ù¤¹¤ë¤È¡¢Á´¤Æ¤Î¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Ë´Ø¤¹¤ë¾ðÊó¤ò ´ÉÍý¤·¤Æ¤¤¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Î»ÈÍÑÃ楨¥ó¥È¥ê¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î ¤¦¤ÁºÇÂçÃͤòÊÖ¤¹ (¤³¤Î¾ðÊó¤Ï¡¢¥·¥¹¥Æ¥à¤ÎÁ´¤Æ¤Î¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Ë´Ø¤¹¤ë¾ðÊó¤ò ¼èÆÀ¤¹¤ë¤¿¤á¤Ë¡¢ MSG_STAT Áàºî¤ò·«¤êÊÖ¤·¼Â¹Ô¤¹¤ëºÝ¤Ë»ÈÍѤǤ¤ë)¡£ MSG_STAT Áàºî¤Ï¡¢À®¸ù¤¹¤ë¤È¡¢ msqid ¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ý¤Ä¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Î¼±Ê̻ҤòÊÖ¤¹¡£¥¨¥é¡¼¤Î¾ì¹ç¤Ï -1 ¤òÊÖ¤·¡¢ errno ¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£
¥¨¥é¡¼
¼ºÇÔ¤·¤¿¾ì¹ç¡¢ errno ¤Ï°Ê²¼¤ÎÃͤÎÃæ¤Î¤É¤ì¤«°ì¤Ä¤ËÀßÄꤵ¤ì¤ë:- EACCES
- °ú¤¿ô cmd ¤¬ IPC_STAT ¤Þ¤¿¤Ï MSG_STAT ¤ËÅù¤·¤¤¤¬¡¢¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼ msqid ¤ËÂФ¹¤ëÆɤ߹þ¤ßµö²Ä¤ò»ý¤Ã¤Æ¤ª¤é¤º¡¢¤«¤Ä CAP_IPC_OWNER ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£
- EFAULT
- °ú¤¿ô cmd ¤¬ IPC_SET ¤« IPC_STAT ¤Ç¡¢¥Ý¥¤¥ó¥¿ buf ¤Ç»Ø¤µ¤ì¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤¬¥¢¥¯¥»¥¹²Äǽ¤Ç¤Ê¤¤¡£
- EIDRM
- ¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¡£
- EINVAL
- cmd ¤Þ¤¿¤Ï msqid ¤ËÉÔÀµ¤ÊÃͤ¬ÀßÄꤵ¤ì¤¿¡£ ¤â¤·¤¯¤Ï¡¢ MSG_STAT Áàºî¤Î¾ì¹ç¤Ë¡¢ msqid ¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹Ãͤ¬¸½ºß̤»ÈÍѤÎÇÛÎó¤Î¥¹¥í¥Ã¥È¤ò»²¾È¤¤¤Æ¤¤¤¿¡£
- EPERM
- °ú¤¿ô cmd ¤¬ IPC_SET ¤« IPC_RMID ¤Ç¤¢¤ë¤¬¡¢¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤¬¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Î (msg_perm.cuid ¤È¤·¤Æ¸«¤Ä¤«¤ë) ºîÀ®¼Ô ¤È (msg_perm.uid ¤È¤·¤Æ¸«¤Ä¤«¤ë) ½êͼԤΤ¤¤º¤ì¤Ç¤â¤Ê¤¯¡¢ ¤«¤Ä¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤ËÆø¢ (Linux ¤Ç¤Ï CAP_SYS_ADMIN ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£) ¤¬¤Ê¤¤¡£
½àµò
SVr4, POSIX.1-2001.Ãí°Õ
IPC_INFO, MSG_STAT, MSG_INFO Áàºî¤Ï¡¢ ipcs(8) ¥×¥í¥°¥é¥à¤Ç³ä¤êÅö¤ÆºÑ¤Î»ñ¸»¤Ë´Ø¤¹¤ë¾ðÊó¤òÄ󶡤¹¤ë¤¿¤á¤Ë »ÈÍѤµ¤ì¤Æ¤¤¤ë¡£¾Íè¡¢¤³¤ì¤é¤ÎÁàºî¤ÏÊѹ¹¤µ¤ì¤¿¤ê¡¢ /proc ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë°ÜÆ°¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£struct msqid_ds Æâ¤Î¿¤¯¤Î¥Õ¥£¡¼¥ë¥É¤Ï¡¢ Linux 2.2 ¤Ç¤Ïû¤«¤Ã¤¿¤¬¡¢Linux 2.4 ¤Ç¤ÏŤ¯¤Ê¤Ã¤¿¡£ ¤³¤ÎÍøÅÀ¤òÀ¸¤«¤¹¤Ë¤Ï¡¢glibc-2.1.91 °Ê¹ß¤Î´Ä¶²¼¤Ç ºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ì¤Ð½½Ê¬¤Ç¤¢¤ë¡£ (¥«¡¼¥Í¥ë¤Ï¿·¤·¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤È¸Å¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤ò cmd Æâ¤Î IPC_64 ¥Õ¥é¥°¤Ç¶èÊ̤¹¤ë¡£)
´ØÏ¢¹àÌÜ
msgget(2), msgrcv(2), msgsnd(2), capabilities(7), mq_overview(7), svipc(7)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre