semget

Autres langues

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)