Rechercher une page de manuel
semget
Langue: ja
Version: 2004-05-27 (openSuse - 09/10/07)
Section: 2 (Appels système)
̾Á°
semget - ¥»¥Þ¥Õ¥©½¸¹ç¤Î¼±Ê̻Ҥò¼èÆÀ¤¹¤ë½ñ¼°
#include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>
int semget(key_t key, int nsems, int semflg);
ÀâÌÀ
semget() ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢°ú¤¿ô key ¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç (semaphore set) ¤Î ¼±ÊÌ»Ò (identifier) ¤òÊÖ¤¹¡£ key ¤ÎÃͤ¬ IPC_PRIVATE ¤Î¾ì¹ç¡¢¤â¤·¤¯¤Ï semflg ¤Ë IPC_CREAT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Æ¡¢ key ¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¡¢ nsems ¸Ä¤Î¥»¥Þ¥Õ¥©¤«¤é¤Ê¤ë¿·¤·¤¤½¸¹ç¤¬ºîÀ®¤µ¤ì¤ë¡£semflg ¤Ë IPC_CREAT ¤È IPC_EXCL ¤ÎξÊý¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢ key ¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤¬´û¤Ë¸ºß¤¹¤ë¤È¡¢ semget() ¤Ï¼ºÇÔ¤·¡¢ errno ¤Ë EEXIST ¤¬ÀßÄꤵ¤ì¤ë (¤³¤ì¤Ï open(2) ¤Ë O_CREAT | O_EXCL ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤ÎÆ°ºî¤ÈƱ¤¸¤Ç¤¢¤ë)¡£
¥»¥Þ¥Õ¥©½¸¹çºîÀ®»þ¤Ë¡¢°ú¤¿ô semflg ¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤Ï¡¢¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤Î (½êÍ¼Ô (owner)¡¢¥°¥ë¡¼¥× (group)¡¢ ¾¿Í (others) ¤ËÂФ¹¤ë) ¥¢¥¯¥»¥¹µö²Ä¤ÎÄêµÁ¤È¤·¤Æ»ÈÍѤµ¤ì¤ë¡£ ¤³¤ì¤é¤Î¥Ó¥Ã¥È¤Ï open(2) ¤Î°ú¤¿ô mode ¤ÈƱ¤¸·Á¼°¤ÇƱ¤¸°ÕÌ£¤Ç¤¢¤ë (⤷¡¢¼Â¹Ô (execute) µö²Ä¤Ï¥»¥Þ¥Õ¥©¤Ç¤Ï°ÕÌ£¤ò»ý¤¿¤º¡¢ ½ñ¤¹þ¤ß (write) µö²Ä¤Ï¥»¥Þ¥Õ¥©ÃͤÎÊѹ¹ (alter) µö²Ä¤È¤·¤Æµ¡Ç½¤¹¤ë)¡£
¿·¤·¤¯ºîÀ®¤µ¤ì¤¿¥»¥Þ¥Õ¥©½¸¹ç¤Î³Æ¥»¥Þ¥Õ¥©¤ÎÃͤÏÉÔÄê¤Ç¤¢¤ë (¤³¤ÎÅÀ¤Ï POSIX.1-2001 ¤ËÌÀµ¤µ¤ì¤Æ¤¤¤ë)¡£ Linux ¤Ï¾¤Î¿¤¯¤Î¼ÂÁõ¤ÈƱÍͤ˥»¥Þ¥Õ¥©Ãͤò 0 ¤Ë½é´ü²½¤¹¤ë¤¬¡¢ °Ü¿¢À¤ò¹Íθ¤·¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¤³¤ÎÆ°ºî¤òÁ°Äó¤Ë¤¹¤Ù¤¤Ç¤Ï¤Ê¤¤¡£ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÏÌÀ¼¨Åª¤Ë¥»¥Þ¥Õ¥©¤ò´õ˾¤ÎÃͤǽé´ü²½¤¹¤Ù¤¤Ç¤¢¤ë¡£
¿·µ¬¤Î¥»¥Þ¥Õ¥©½¸¹ç¤òºîÀ®¤¹¤ëºÝ¡¢ semget() ¤Ï¥»¥Þ¥Õ¥©½¸¹ç¤Î¾ðÊó¤òÊÝ»ý¤¹¤ë¥Ç¡¼¥¿¹½Â¤ÂÎ semid_ds ¤ò¼¡¤Î¤è¤¦¤Ë½é´ü²½¤¹¤ë (semid_ds ¤Ë¤Ä¤¤¤Æ¤Ï semctl(2) ¤ò»²¾È):
- sem_perm.cuid ¤È sem_perm.uid ¤Ë¡¢¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤Î¼Â¸ú (effective) ¥æ¡¼¥¶ ID ¤òÀßÄꤹ¤ë¡£
- sem_perm.cgid ¤È sem_perm.gid ¤Ë¡¢¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤Î¼Â¸ú (effective) ¥°¥ë¡¼¥× ID ¤òÀßÄꤹ¤ë¡£
- sem_perm.mode ¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤Ë semflg ¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤òÀßÄꤹ¤ë¡£
- sem_nsems ¤Ë nsems ¤ÎÃͤòÀßÄꤹ¤ë¡£
- sem_otime ¤Ë 0 ¤òÀßÄꤹ¤ë¡£
- sem_ctime ¤Ë¸½ºß¤Î»þ¹ï¤òÀßÄꤹ¤ë¡£
¥»¥Þ¥Õ¥©½¸¹ç¤ÎºîÀ®¤ò¹Ô¤ï¤Ê¤¤¾ì¹ç¤Ï¡¢°ú¤¿ô nsems ¤Ë (don't care ¤ò°ÕÌ£¤¹¤ë) 0 ¤ò»ØÄꤷ¤Æ¤â¤è¤¤¡£ ¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢ nsems ¤Ï 0 ¤è¤êÂ礤¤ÃͤǤʤ±¤ì¤Ð¤Ê¤é¤º¡¢¥»¥Þ¥Õ¥©½¸¹ç¤¢¤¿¤ê¤Î¥»¥Þ¥Õ¥©¤ÎºÇÂç¿ô (SEMMSL) °Ê²¼¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¥»¥Þ¥Õ¥©½¸¹ç¤¬´û¤Ë¸ºß¤·¤¿¾ì¹ç¤Ï¡¢¥¢¥¯¥»¥¹µö²Ä¤Î¸¡ºº¤¬¹Ô¤ï¤ì¤ë¡£
ÊÖ¤êÃÍ
À®¸ù¤·¤¿¾ì¹ç¡¢¥»¥Þ¥Õ¥©½¸¹ç¤Î¼±ÊÌ»Ò (ÈóÉé¤ÎÀ°¿ô) ¤¬ÊÖ¤êÃͤȤʤ롣 ¼ºÇÔ¤·¤¿¾ì¹ç¤Ï -1 ¤¬ÊÖ¤µ¤ì¡¢ errno ¤Ë¥¨¥é¡¼¤ò¼¨¤¹Ãͤ¬ÀßÄꤵ¤ì¤ë¡£¥¨¥é¡¼
¼ºÇÔ¤·¤¿¾ì¹ç¡¢ errno ¤Ë¤Ï°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«°ì¤Ä¤¬ÀßÄꤵ¤ì¤ë:- EACCES
- key ¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤Ï¸ºß¤¹¤ë¤¬¡¢ ¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤Ï¤½¤Î½¸¹ç¤Ø¤Î¥¢¥¯¥»¥¹µö²Ä¤¬¤Ê¤¯¡¢ CAP_IPC_OWNER ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£
- EEXIST
- key ¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤¬Â¸ºß¤·¡¢ semflg ¤Ë¤Ï IPC_CREAT ¤È IPC_EXCL ¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¡£
- EINVAL
- nsems ¤¬ 0 ¤è¤ê¾®¤µ¤¤¤«¡¢¥»¥Þ¥Õ¥©½¸¹ç¤¢¤¿¤ê¤Î¥»¥Þ¥Õ¥©¤ÎºÇÂç¿ô (SEMMSL) ¤è¤êÂ礤¤¡£ ¤Þ¤¿¤Ï¡¢ key ¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤¬´û¤Ë¸ºß¤·¡¢ nsems ¤¬¤½¤Î½¸¹ç¤Î¥»¥Þ¥Õ¥©¿ô¤è¤ê¤âÂ礤¤¡£
- ENOENT
- key ¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤¬Â¸ºß¤»¤º¡¢ semflg ¤Ë IPC_CREAT ¤¬»ØÄꤵ¤ì¤Æ¤â¤¤¤Ê¤¤¡£
- ENOMEM
- ¥»¥Þ¥Õ¥©½¸¹ç¤òºîÀ®¤·¤è¤¦¤È¤·¤¿¤¬¡¢¿·¤·¤¤¥Ç¡¼¥¿¹½Â¤ÂΤò ºîÀ®¤¹¤ë¤Î¤Ë½½Ê¬¤Ê¥á¥â¥ê¤¬¥·¥¹¥Æ¥à¤Ë¸ºß¤·¤Ê¤¤¡£
- ENOSPC
- ¥»¥Þ¥Õ¥©½¸¹ç¤òºîÀ®¤·¤è¤¦¤È¤¹¤ë¤È¡¢¥·¥¹¥Æ¥à¤Î¥»¥Þ¥Õ¥©½¸¹ç¤Î ºÇÂç¿ô (SEMMNI) ¤«¡¢¥·¥¹¥Æ¥àÁ´ÂΤΥ»¥Þ¥Õ¥©¤ÎºÇÂç¿ô (SEMMNS) ¤Î¤¤¤º¤ì¤«¤òĶ¤¨¤Æ¤·¤Þ¤¦¡£
½àµò
SVr4, POSIX.1-2001.Ãí°Õ
IPC_PRIVATE ¤Ï¥Õ¥é¥°¡¦¥Õ¥£¡¼¥ë¥É¤Ë»ØÄꤹ¤ë¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢ key_t ·¿¤Ç¤¢¤ë¡£ ¤³¤ÎÆÃÊ̤ÊÃͤ¬ key ¤Ë»ØÄꤵ¤ì¤ë¤È¡¢ semget() semflg ¤Î²¼°Ì 9 ¥Ó¥Ã¥È°Ê³°¤ÏÁ´¤Æ̵»ë¤·¡¢ (À®¸ù¤·¤¿¾ì¹ç¤Ï) ¿·¤·¤¤¥»¥Þ¥Õ¥©½¸¹ç¤òºîÀ®¤¹¤ë¡£¥»¥Þ¥Õ¥©½¸¹ç¤Î¥ê¥½¡¼¥¹¤Ë´Ø¤¹¤ëÀ©¸Â¤Î¤¦¤Á¡¢ semget() ¤Ë±Æ¶Á¤òµÚ¤Ü¤¹¤â¤Î¤ò°Ê²¼¤Ëµó¤²¤ë:
- SEMMNI
- ¥·¥¹¥Æ¥àÁ´ÂΤΥ»¥Þ¥Õ¥©½¸¹ç¤ÎºÇÂç¿ô: Êý¿Ë°Í¸ (Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃÍ¤Ï /proc/sys/kernel/sem ¤ÎÂè4¥Õ¥£¡¼¥ë¥É¤ËÂбþ¤·¡¢Æɤ߽Ф·¤âÊѹ¹¤â¤Ç¤¤ë)¡£
- SEMMSL
- semid ¤¢¤¿¤ê¤Î¥»¥Þ¥Õ¥©¤ÎºÇÂç¿ô: ¼ÂÁõ°Í¸ (Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃÍ¤Ï /proc/sys/kernel/sem ¤ÎÂè1¥Õ¥£¡¼¥ë¥É¤ËÂбþ¤·¡¢Æɤ߽Ф·¤âÊѹ¹¤â¤Ç¤¤ë)¡£
- SEMMNS
- ¥·¥¹¥Æ¥àÁ´ÂΤΥ»¥Þ¥Õ¥©¤ÎºÇÂç¿ô: Êý¿Ë°Í¸ (Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃÍ¤Ï /proc/sys/kernel/sem ¤ÎÂè2¥Õ¥£¡¼¥ë¥É¤ËÂбþ¤·¡¢Æɤ߽Ф·¤âÊѹ¹¤â¤Ç¤¤ë)¡£ SEMMSL * SEMMNI ¤è¤êÂ礤ÊÃͤϰÕÌ£¤ò»ý¤¿¤Ê¤¤¡£
¥Ð¥°
IPC_PRIVATE ¤È¤¤¤¦Ì¾Á°¤òÁª¤ó¤À¤Î¤Ï¤ª¤½¤é¤¯¼ºÇԤǤ¢¤í¤¦¡£ IPC_NEW ¤ÎÊý¤¬¤è¤êÌÀ³Î¤Ë¤½¤Îµ¡Ç½¤òɽ¤·¤Æ¤¤¤ë¤À¤í¤¦¡£¥»¥Þ¥Õ¥©½¸¹çÆâ¤Î¥»¥Þ¥Õ¥©¤Ï semget() ¤Ç¤Ï½é´ü²½¤µ¤ì¤Ê¤¤¡£ ¤³¤Î¥»¥Þ¥Õ¥©¤ò½é´ü²½¤¹¤ë¤Ë¤Ï¡¢¥»¥Þ¥Õ¥©½¸¹ç¤ËÂФ·¤Æ semctl(2) ¤ò»È¤Ã¤Æ SETVAL ¤« SETALL Áàºî¤ò¼Â¹Ô¤¹¤ëɬÍפ¬¤¢¤ë¡£ (Ê£¿ô²Õ½ê¤«¤é¥»¥Þ¥Õ¥©½¸¹ç¤ÎÁàºî¤¬¹Ô¤ï¤ì¤ë¾ìÌ̤Ǥϡ¢ 郎ºÇ½é¤Ë½¸¹ç¤ò½é´ü²½¤¹¤ì¤Ð¤è¤¤¤«Ê¬¤«¤é¤Ê¤¤¡£ ¤³¤Î¾õ¶·¤òÈò¤±¤ë¤Ë¤Ï¡¢ semctl(2) ¤Î IPC_STAT Áàºî¤Ç¼èÆÀ¤Ç¤¤ë¥»¥Þ¥Õ¥©¤Î¥Ç¡¼¥¿¹½Â¤ÂΤΠsem_otime ¤¬ 0 °Ê³°¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ì¤Ð¤è¤¤¡£)
´ØÏ¢¹àÌÜ
semctl(2), semop(2), ftok(3), capabilities(7), sem_overview(7), svipc(7)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre