Rechercher une page de manuel
semctl
Langue: ja
Version: 2004-11-10 (openSuse - 09/10/07)
Section: 2 (Appels système)
̾Á°
semctl - ¥»¥Þ¥Õ¥©¤ÎÀ©¸æÁàºî¤ò¹Ô¤Ê¤¦½ñ¼°
#include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> int semctl(int semid, int semnum, int cmd, ...);
ÀâÌÀ
semctl() ¤Ï¡¢ semid ¤Ç»ØÄꤵ¤ì¤¿¥»¥Þ¥Õ¥©½¸¹ç (semaphore set) ¤Þ¤¿¤Ï¥»¥Þ¥Õ¥©½¸¹ç¤Î semnun ÈÖÌܤΥ»¥Þ¥Õ¥©¤ËÂФ·¤Æ¡¢ cmd ¤Ç»ØÄꤵ¤ì¤¿À©¸æÁàºî¤ò¹Ô¤Ê¤¦ (½¸¹çÆâ¤Î¥»¥Þ¥Õ¥©¤ÎÈÖ¹æ¤Ï 0 ¤«¤é»Ï¤Þ¤ë)¡£¤³¤Î´Ø¿ô¤Ï¡¢ cmd ¤ÎÃͤ˰͸¤·¤Æ¡¢3 ¸Ä¤Þ¤¿¤Ï 4 ¸Ä¤Î°ú¤¿ô¤ò»ý¤Ä¡£ °ú¤¿ô¤¬ 4 ¸Ä¤Î¾ì¹ç¡¢Âè 4 °ú¤¿ô¤Î·¿¤Ï union semun ¤Ç¤¢¤ë¡£ ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥°¥é¥à¤Ï¡¢ ¤³¤Î¶¦ÍÑÂÎ (union) ¤ò°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
union semun { int val; /* SETVAL ¤ÎÃÍ */ struct semid_ds *buf; /* IPC_STAT, IPC_SET ÍѤΥХåե¡ */ unsigned short *array; /* GETALL, SETALL ÍѤÎÇÛÎó */ struct seminfo *__buf; /* IPC_INFO ÍѤΥХåե¡ (Linux ¸ÇÍ) */ };
semid_ds ¥Ç¡¼¥¿¹½Â¤ÂÎ¤Ï <sys/sem.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
struct semid_ds { struct ipc_perm sem_perm; /* ½ê͸¢¤Èµö²Ä */ time_t sem_otime; /* ºÇ¸å¤Î semop ¤Î»þ¹ï */ time_t sem_ctime; /* ºÇ¸å¤ËÊѹ¹¤¬¹Ô¤ï¤ì¤¿»þ¹ï */ unsigned short sem_nsems; /* ½¸¹çÆâ¤Î¥»¥Þ¥Õ¥©¤Î¿ô */ };
ipc_perm ¹½Â¤ÂÎ¤Ï <sys/ipc.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë (¶¯Ä´¤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É¤Ï IPC_SET ¤ò»È¤Ã¤ÆÀßÄê²Äǽ¤Ç¤¢¤ë):
struct ipc_perm { key_t key; /* semget(2) ¤ËÍ¿¤¨¤é¤ì¤ë¥¡¼ */ uid_t uid; /* ½êÍ¼Ô (owner) ¤Î¼Â¸ú UID */ gid_t gid; /* ½êͼԤμ¸ú GID */ uid_t cuid; /* ºîÀ®¼Ô (creator) ¤Î¼Â¸ú UID */ gid_t cgid; /* ºîÀ®¼Ô¤Î¼Â¸ú GID */ unsigned short mode; /* µö²Ä */ unsigned short seq; /* ¥·¡¼¥±¥ó¥¹ÈÖ¹æ */ };
cmd ¤È¤·¤Æ͸ú¤ÊÃͤÏ
- IPC_STAT
- semid ¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿¥«¡¼¥Í¥ë¥Ç¡¼¥¿¹½Â¤ÂΤξðÊó¤ò arg.buf ¤Ç»Ø¤µ¤ì¤¿ semid_ds ¹½Â¤ÂΤإ³¥Ô¡¼¤¹¤ë¡£ semnum °ú¤¿ô¤Ï̵»ë¤µ¤ì¤ë¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ï¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤ËÂФ¹¤ë Æɤ߹þ¤ßµö²Ä¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
- IPC_SET
- arg.buf ¤Ç»ØÄꤵ¤ì¤¿ semid_ds ¹½Â¤ÂΤΥá¥ó¥Ð¡¼¤Î¤¤¤¯¤Ä¤«¤ÎÃͤò¡¢ ¤³¤Î¥»¥Þ¥Õ¥©¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿¥«¡¼¥Í¥ë¥Ç¡¼¥¿¹½Â¤ÂΤ˽ñ¤¹þ¤ß¡¢ sem_ctime ¥á¥ó¥Ð¡¼¤ÎÃͤ⹹¿·¤¹¤ë¡£ ¹½Â¤ÂΤΰʲ¼¤Î¥á¥ó¥Ð¡¼¤¬¹¹¿·¤µ¤ì¤ë: sem_perm.uid, sem_perm.gid, sem_perm.mode (¤ÎºÇ²¼°Ì 9 ¥Ó¥Ã¥È)¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú UID ¤¬½êÍ¼Ô (sem_perm.uid) ¤Þ¤¿¤ÏºîÀ®¼Ô (sem_perm.cuid) ¤È°ìÃפ¹¤ë¤«¡¢¸Æ¤Ó½Ð¤·¤¿¿Í¤¬Æø¢¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ semnum °ú¤¿ô¤Ï̵»ë¤µ¤ì¤ë¡£
- IPC_RMID
- ¥»¥Þ¥Õ¥©½¸¹ç¤ò¤¿¤À¤Á¤Ëºï½ü¤·¡¢¤½¤Î½¸¹ç¾å¤Î semop(2) ¥³¡¼¥ë¤Ç¥Ö¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î¥×¥í¥»¥¹¤òÌܳФᤵ¤»¤ë (¥¨¥é¡¼Ãͤ¬ÊÖ¤µ¤ì¤Æ¡¢ errno ¤Ë EIDRM ¤¬ÀßÄꤵ¤ì¤ë)¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤¬ ¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤ÎºîÀ®¼Ô¤Þ¤¿¤Ï½êͼԤȰìÃפ¹¤ë¤«¡¢ ¸Æ¤Ó½Ð¤·¤¿¿Í¤¬Æø¢¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ semnum °ú¤¿ô¤Ï̵»ë¤µ¤ì¤ë¡£
- IPC_INFO (Linux ¸ÇÍ)
- ¥·¥¹¥Æ¥àÁ´ÂΤǤΥ»¥Þ¥Õ¥©¤ÎÀ©¸Â¤È¥Ñ¥é¥á¡¼¥¿¤Ë´Ø¤¹¤ë¾ðÊó¤ò¡¢ arg.__buf ¤¬»Ø¤¹¹½Â¤ÂΤËÆþ¤ì¤ÆÊÖ¤¹¡£ ¤³¤Î¹½Â¤ÂÎ¤Ï seminfo ·¿¤Ç¤¢¤ë¡£ seminfo ¤Ï _GNU_SOURCE µ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤¿¾ì¹ç¤Ë <sys/sem.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤ë:
struct seminfo { int semmap; /* ¥»¥Þ¥Õ¥©¡¦¥Þ¥Ã¥×¤ÎºÇÂ票¥ó¥È¥ê¿ô; ̤»ÈÍÑ */ int semmni; /* ¥»¥Þ¥Õ¥©½¸¹ç¤ÎºÇÂç¿ô */ int semmns; /* Á´¥»¥Þ¥Õ¥©½¸¹çÃæ¤Î¥»¥Þ¥Õ¥©¤Î ºÇÂç¿ô */ int semmnu; /* ¥¢¥ó¥É¥¥¹½Â¤ÂΤΥ·¥¹¥Æ¥àÁ´ÂΤǤΠºÇÂç¿ô; ̤»ÈÍÑ */ int semmsl; /* °ì¤Ä¤Î¥»¥Þ¥Õ¥©½¸¹ç¤ÎºÇÂ祻¥Þ¥Õ¥©¿ô */ int semopm; /* semop(2) ¤ËÅϤ¹Áàºî¤ÎºÇÂç¿ô */ int semume; /* ¥×¥í¥»¥¹¤¢¤¿¤ê¤Î¥¢¥ó¥É¥¥¡¦¥¨¥ó¥È¥ê ¤ÎºÇÂç¿ô; ̤»ÈÍÑ */ int semusz; /* ¹½Â¤ÂÎ sem_undo ¤Î¥µ¥¤¥º */ int semvmx; /* ¥»¥Þ¥Õ¥©¤ÎºÇÂçÃÍ */ int semaem; /* ¥»¥Þ¥Õ¥©¤ÎÄ´À° (semaphore adjustment; SEM_UNDO) ¤Î¤¿¤á¤ËµÏ¿¤µ¤ì¤ëºÇÂçÃÍ */ };
ÀßÄê semmsl, semmns, semopm, semmni ¤Ï /proc/sys/kernel/sem ·Ðͳ¤ÇÊѹ¹²Äǽ¤Ç¤¢¤ë¡£ ¾Ü¤·¤¯¤Ï proc(5) ¤ò»²¾È¡£ - SEM_INFO (Linux ¸ÇÍ)
- IPC_INFO ¤Î¤È¤¤ÈƱ¤¸¾ðÊó¤ò³ÊǼ¤·¤¿ seminfo ¹½Â¤ÂΤòÊÖ¤¹¡£ ⤷¡¢°Ê²¼¤Î¥Õ¥£¡¼¥ë¥É¤Ë¤Ï¥»¥Þ¥Õ¥©¤¬¾ÃÈñ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à»ñ¸»¤Ë ´Ø¤¹¤ë¾ðÊ󤬳ÊǼ¤µ¤ì¤ëÅÀ¤¬°Û¤Ê¤ë¡£ semusz ¥Õ¥£¡¼¥ë¥É¤Ï¸½ºß¥·¥¹¥Æ¥à¾å¤Ë¸ºß¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤Î¿ô¤òÊÖ¤¹¡£ semaem ¥Õ¥£¡¼¥ë¥É¤Ï¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¥»¥Þ¥Õ¥©½¸¹ç¤Ë´Þ¤Þ¤ì¤ë ¥»¥Þ¥Õ¥©¤ÎÁí¿ô¤òÊÖ¤¹¡£
- SEM_STAT (Linux ¸ÇÍ)
- IPC_STAT ¤ÈƱ¤¸¤¯ semid_ds ¹½Â¤ÂΤòÊÖ¤¹¡£ ⤷¡¢ semid °ú¤¿ô¤Ï¡¢¥»¥Þ¥Õ¥©¼±Ê̻ҤǤϤʤ¯¡¢¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¥»¥Þ¥Õ¥©½¸¹ç ¤Ë´Ø¤¹¤ë¾ðÊó¤ò´ÉÍý¤¹¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Ø¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤¢¤ë¡£
- GETALL
- ½¸¹ç¤ÎÁ´¤Æ¤Î¥»¥Þ¥Õ¥©¤Î semval ¤ÎÃÍ (¸½ºß¤ÎÃÍ) ¤ò arg.array ¤ËÊÖ¤¹¡£ semnum °ú¤¿ô¤Ï̵»ë¤µ¤ì¤ë¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ï¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤ËÆɤ߹þ¤ßµö²Ä¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
- GETNCNT
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï½¸¹ç¤Î semnum ÈÖÌܤΥ»¥Þ¥Õ¥©¤Î semncnt ¤ÎÃÍ (¤³¤Î¥»¥Þ¥Õ¥©¤ÎÃͤ¬Áý²Ã¤¹¤ë¤Î¤òÂԤäƤ¤¤ë¥×¥í¥»¥¹¿ô) ¤òÊÖ¤¹ (½¸¹ç¤Î semnum ÈÖÌܤΥ»¥Þ¥Õ¥©¤Î semval ¤ÎÁý²Ã¤òÂԤäƤ¤¤ë¥×¥í¥»¥¹¤Î¿ô¤òÊÖ¤¹)¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ï¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤ËÆɤ߹þ¤ßµö²Ä¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
- GETPID
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï½¸¹ç¤Î semnum ÈÖÌܤΥ»¥Þ¥Õ¥©¤Î sempid ¤ÎÃÍ (½¸¹ç¤Î semnum ÈÖÌܤΥ»¥Þ¥Õ¥©¤ËºÇ¸å¤Ë semop(2) ¥³¡¼¥ë¤ò¼Â¹Ô¤·¤¿¥×¥í¥»¥¹¤Î PID) ¤òÊÖ¤¹¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ï¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤ËÆɤ߹þ¤ßµö²Ä¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
- GETVAL
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï½¸¹ç¤Î semnum ÈÖÌܤΥ»¥Þ¥Õ¥©¤Î semval ¤ÎÃͤòÊÖ¤¹¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ï¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤ËÆɤ߹þ¤ßµö²Ä¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
- GETZCNT
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï½¸¹ç¤Î semnum ÈÖÌܤΥ»¥Þ¥Õ¥©¤Î semzcnt ¤ÎÃÍ (¤³¤Î¥»¥Þ¥Õ¥©¤ÎÃͤ¬ 0 ¤Ë¤Ê¤ë¤Î¤òÂԤäƤ¤¤ë¥×¥í¥»¥¹¤Î¿ô) ¤òÊÖ¤¹ (½¸¹ç¤Î semnum ÈÖÌܤΥ»¥Þ¥Õ¥©¤Î semval ¤ÎÃͤ¬ 0 ¤Ë¤Ê¤ë¤Î¤òÂԤäƤ¤¤ë¥×¥í¥»¥¹¤Î¿ô¤òÊÖ¤¹)¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ï¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤ËÆɤ߹þ¤ßµö²Ä¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
- SETALL
- ½¸¹ç¤ÎÁ´¤Æ¤Î¥»¥Þ¥Õ¥©¤Î semval ¤Ë arg.array ¤Ç»ØÄꤵ¤ì¤¿ÃͤòÀßÄꤹ¤ë¡£ ¤½¤Î½¸¹ç¤Ë´ØÏ¢¤¹¤ë semid_ds ¹½Â¤ÂΤΠsem_ctime ¥á¥ó¥Ð¡¼¤ÎÃͤ⹹¿·¤¹¤ë¡£ Á´¤Æ¤Î¥×¥í¥»¥¹¤Î¥»¥Þ¥Õ¥©¤ÎÊѹ¹¤Ë¤Ä¤¤¤Æ¤Î¥¢¥ó¥É¥¥¡¦¥¨¥ó¥È¥ê (semop(2) ¤ò»²¾È) ¤Ï¾Ãµî (clear) ¤µ¤ì¤ë¡£ ¥»¥Þ¥Õ¥©¤ÎÃͤÎÊѹ¹¤Ë¤è¤ê¡¢Â¾¤Î¥×¥í¥»¥¹Æâ¤Ç¥Ö¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë semop(2) ¥³¡¼¥ë¤Î³¹Ô¤¬µö²Ä¤µ¤ì¤ë¤È¡¢¤½¤ì¤é¤Î¥×¥í¥»¥¹¤Ïµ¯¤³¤µ¤ì¤ë (wake up)¡£ semnum °ú¤¿ô¤Ï̵»ë¤µ¤ì¤ë¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ï¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤Ë Êѹ¹ (½ñ¤¹þ¤ß) µö²Ä¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
- SETVAL
- ½¸¹ç¤Î semnum ÈÖÌܤΥ»¥Þ¥Õ¥©¤Î semval ¤Ë arg.val ¤ÎÃͤòÀßÄꤹ¤ë¡£¤½¤Î½¸¹ç¤Ë´ØÏ¢¤¹¤ë semid_ds ¹½Â¤ÂΤΠsem_ctime ¥á¥ó¥Ð¡¼¤ÎÃͤ⹹¿·¤¹¤ë¡£ Á´¤Æ¤Î¥×¥í¥»¥¹¤Î¥»¥Þ¥Õ¥©¤ÎÊѹ¹¤Ë¤Ä¤¤¤Æ¤Î¥¢¥ó¥É¥¥¡¦¥¨¥ó¥È¥ê¤Ï¾Ãµî¤µ¤ì¤ë¡£ ¥»¥Þ¥Õ¥©¤ÎÃͤÎÊѹ¹¤Ë¤è¤ê¡¢Â¾¤Î¥×¥í¥»¥¹Æâ¤Ç¥Ö¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë semop(2) ¥³¡¼¥ë¤Î³¹Ô¤¬µö²Ä¤µ¤ì¤ë¤È¡¢¤½¤ì¤é¤Î¥×¥í¥»¥¹¤Ïµ¯¤³¤µ¤ì¤ë (wake up)¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ï¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤Ë Êѹ¹ (½ñ¤¹þ¤ß) µö²Ä¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
ÊÖ¤êÃÍ
¼ºÇÔ¤·¤¿¾ì¹ç¡¢ semctl() ¤Ï -1 ¤òÊÖ¤·¡¢ errno ¤Ë¤½¤Î¥¨¥é¡¼¤ò¼¨¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï cmd ¤Ë¤è¤Ã¤Æ°Ê²¼¤ÎÉé¤Ç¤Ê¤¤ÃͤòÊÖ¤¹:
- GETNCNT
- semncnt ¤ÎÃÍ
- GETPID
- sempid ¤ÎÃÍ
- GETVAL
- semval ¤ÎÃÍ
- GETZCNT
- semzcnt ¤ÎÃÍ
- IPC_INFO
- Á´¤Æ¤Î¥»¥Þ¥Õ¥©½¸¹ç¤Ë´Ø¤¹¤ë¾ðÊó¤ò´ÉÍý¤·¤Æ¤¤¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Î»ÈÍÑÃæ ¥¨¥ó¥È¥ê¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÎºÇÂçÃÍ (¤³¤Î¾ðÊó¤Ï¡¢¥·¥¹¥Æ¥à¤ÎÁ´¤Æ¤Î¥»¥Þ¥Õ¥©½¸¹ç¤Ë´Ø¤¹¤ë¾ðÊó¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Ë SEM_STAT Áàºî¤ò·«¤êÊÖ¤·¼Â¹Ô¤¹¤ëºÝ¤Ë»ÈÍѤǤ¤ë)
- SEM_INFO
- IPC_INFO ¤ÈƱ¤¸
- SEM_STAT
- semid ¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ý¤Ä¥»¥Þ¥Õ¥©½¸¹ç¤Î¼±ÊÌ»Ò
cmd ¤ÎÃͤ¬¤½¤ì°Ê³°¤Î¾ì¹ç¡¢À®¸ù¤¹¤ë¤È 0 ¤¬ÊÖ¤µ¤ì¤ë¡£
¥¨¥é¡¼
¼ºÇÔ¤·¤¿¾ì¹ç¤Ï errno ¤Ë¤Ï°Ê²¼¤ÎÃͤΤɤ줫¤¬ÀßÄꤵ¤ì¤ë:- EACCES
- cmd °ú¤¿ô¤¬ GETALL, GETPID, GETVAL, GETNCNT, GETZCNT, IPC_STAT, SEM_STAT, SETALL, SETVAL ¤Î¤¦¤Á¤Î²¿¤ì¤«¤ÎÃͤò»ý¤Á¡¢ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬¥»¥Þ¥Õ¥©¤ËÂФ·¤ÆɬÍפȤµ¤ì¤ëµö²Ä¤È CAP_IPC_OWNER ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£ (capability) ¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£
- EFAULT
- arg.buf ¤Þ¤¿¤Ï arg.array ¤Ç»Ø¤µ¤ì¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¤¡£
- EIDRM
- ¥»¥Þ¥Õ¥©½¸¹ç¤¬ºï½ü¤µ¤ì¤¿¡£
- EINVAL
- cmd ¤Þ¤¿¤Ï semid ¤Ë̵¸ú¤ÊÃͤ¬»ØÄꤵ¤ì¤¿¡£ ¤â¤·¤¯¤Ï¡¢ SEM_STAT Áàºî¤Î¾ì¹ç¤Ë¡¢ semid ¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹Ãͤ¬¸½ºß̤»ÈÍѤÎÇÛÎó¤Î¥¹¥í¥Ã¥È¤ò»²¾È¤¤¤Æ¤¤¤¿¡£
- EPERM
- cmd °ú¤¿ô¤Ë IPC_SET ¤Þ¤¿¤Ï IPC_RMID ¤¬»ØÄꤵ¤ì¡¢¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤¬¥»¥Þ¥Õ¥©¤Î (sem_perm.cuid ¤Ç¸«¤Ä¤«¤ë) ºîÀ®¼Ô¤Þ¤¿¤Ï (sem_perm.uid ¤Ç¸«¤Ä¤«¤ë) ½êͼԤǤâ¤Ê¤¯¡¢ ¥×¥í¥»¥¹¤¬ CAP_SYS_ADMIN ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò»ý¤¿¤Ê¤¤¡£
- ERANGE
- cmd °ú¤¿ô¤Ë SETALL ¤Þ¤¿¤Ï SETVAL ¤¬»ØÄꤵ¤ì¡¢(½¸¹ç¤Î¥»¥Þ¥Õ¥©¤Î¤É¤ì¤«¤Î) semval ¤ËÀßÄꤵ¤ì¤ëÃͤ¬ 0 ¤è¤ê¾®¤µ¤¤¤«¡¢¼ÂÁõ¤ÎÀ©¸Â SEMVMX ¤è¤ê¤âÂ礤¤¡£
½àµò
SVr4, POSIX.1-2001.Ãí°Õ
IPC_INFO, SEM_STAT, SEM_INFO Áàºî¤Ï ipcs(8) ¥×¥í¥°¥é¥à¤Ë¤è¤Ã¤Æ³äÅö¤é¤ì¤¿»ñ¸»¤Ë¤Ä¤¤¤Æ¾ðÊó¤òÄ󶡤¹¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤ë¡£ ¾ÍèŪ¤Ë¤Ï¤³¤ì¤é¤ÏÊѹ¹¤µ¤ì¤ë¤«¡¢ /proc ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë°ÜÆ°¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£¹½Â¤ÂÎ semid_ds Æâ¤Î¿¤¯¤Î¥Õ¥£¡¼¥ë¥É¤Ï¡¢ Linux 2.2 ¤Ç¤Ïû¤«¤Ã¤¿¤¬¡¢Linux 2.4 ¤Ç¤ÏŤ¯¤Ê¤Ã¤¿¡£ ¤³¤ÎÍøÅÀ¤òÀ¸¤«¤¹¤Ë¤Ï¡¢glibc-2.1.91 °Ê¹ß¤Î´Ä¶²¼¤Ç ºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ì¤Ð½½Ê¬¤Ç¤¢¤ë¡£ ¥«¡¼¥Í¥ë¤Ï¿·¤·¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤È¸Å¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤ò cmd Æâ¤Î IPC_64 ¥Õ¥é¥°¤Ç¶èÊ̤¹¤ë¡£
½é´ü¤Î¥Ð¡¼¥¸¥ç¥ó¤Î glibc ¤Ç¤Ï¡¢ semun ¶¦ÍÑÂÎ¤Ï <sys/sem.h> ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤¿¤¬¡¢ POSIX.1-2001 ¤Ç¤Ï¸Æ¤Ó½Ð¤·Â¦¤¬¤³¤Î¶¦ÍÑÂΤòÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ë¡£ ¤³¤Î¶¦ÍÑÂΤ¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤ glibc ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢ ¥Þ¥¯¥í _SEM_SEMUN_UNDEFINED ¤¬ <sys/sem.h> ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
°Ê²¼¤Ï semctl() ¥³¡¼¥ë¤Ë±Æ¶Á¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤Î¥·¥¹¥Æ¥àÀ©¸Â:
- SEMVMX
- semval ¤ÎºÇÂçÃÍ : ¼ÂÁõ°Í¸ (32767)¡£
°Ü¿¢À¤ò¹â¤á¤ë¤¿¤á¤Î°ìÈÖÎɤ¤ÊýË¡¤Ï¡¢¾ï¤Ë 4 ¸Ä¤Î°ú¤¿ô¤Ç semctl() ¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¤¢¤ë¡£
Linux ¤Ë¤ª¤¤¤Æ¡¢ semctl() ¤Ï¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ç¤Ï¤Ê¤¤¤¬¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë ipc(2) ¤ò»È¤Ã¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¡£
´ØÏ¢¹àÌÜ
ipc(2), semget(2), semop(2), capabilities(7), sem_overview(7), svipc(7)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre