Rechercher une page de manuel
shmget
Langue: ja
Version: 2006-05-02 (openSuse - 09/10/07)
Section: 2 (Appels système)
̾Á°
shmget - ¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤ò³ä¤êÅö¤Æ¤ë½ñ¼°
#include <sys/ipc.h> #include <sys/shm.h>int shmget(key_t key, size_t size, int shmflg);
ÀâÌÀ
shmget() ¤Ï key °ú¤¿ô¤ËÂбþ¤¹¤ë¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Î¼±Ê̻ҤòÊÖ¤¹¡£ key ¤ÎÃͤ¬ IPC_PRIVATE ¤Î¾ì¹ç¡¢¤â¤·¤¯¤Ï key ¤ËÂбþ¤¹¤ë¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤¬Â¸ºß¤»¤º¡¢ shmflg ¤Ë IPC_CREAT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¾ì¹ç¡¢ ¿·¤·¤¤¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤òºîÀ®¤¹¤ë¡£ ºîÀ®¤µ¤ì¤ë¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Ï¡¢ size °ú¤¿ô¤ÎÃͤò PAGE_SIZE ¤ÎÇÜ¿ô¤Ø¤ÈÀÚ¤ê¾å¤²¤¿ (round up) Â礤µ¤È¤Ê¤ë¡£shmflg ¤Ë IPC_CREAT ¤È IPC_EXCL ¤ÎξÊý¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢ key ¤ËÂбþ¤¹¤ë¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤¬´û¤Ë¸ºß¤¹¤ë¤È¡¢ shmget() ¤Ï¼ºÇÔ¤·¡¢ errno ¤Ë EEXIST ¤¬ÀßÄꤵ¤ì¤ë (¤³¤ì¤Ï open(2) ¤Ë O_CREAT | O_EXCL ¤ò»ØÄꤷ¤¿¾ì¹ç¤ÎÆ°ºî¤ÈƱ¤¸¤Ç¤¢¤ë)¡£
shmflg ¤Ï°Ê²¼¤ÎÆâÍƤ«¤é¹½À®¤µ¤ì¤ë:
- IPC_CREAT
- ¿·¤·¤¤¥»¥°¥á¥ó¥È¤òºîÀ®¤¹¤ë¡£¤³¤Î¥Õ¥é¥°¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢ shmget() ¤Ï key ¤ËÂбþ¤¹¤ë¥»¥°¥á¥ó¥È¤òõ¤·¡¢ ¥æ¡¼¥¶¤¬¤½¤Î¥»¥°¥á¥ó¥È¤Ë¥¢¥¯¥»¥¹¤¹¤ëµö²Ä¤¬¤¢¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
- IPC_EXCL
- IPC_CREAT ¤È¶¦¤Ë»ÈÍѤ·¡¢¥»¥°¥á¥ó¥È¤¬´û¤Ë¸ºß¤·¤¿¾ì¹ç¤Ë¤Ï ¼ºÇÔ¤¹¤ë¤³¤È¤òÊݾڤ¹¤ë¡£
- mode_flags
- (²¼°Ì 9 ¥Ó¥Ã¥È) ½êͼԡ¢¥°¥ë¡¼¥×¡¢Â¾¿Í (world) ¤Ø¤Îµö²Ä¤ò»ØÄꤹ¤ë¡£ ¤³¤ì¤é¤Î¥Ó¥Ã¥È¤Ï open(2) ¤Î mode °ú¤¿ô¤ÈƱ¤¸·Á¼°¤ÇƱ¤¸°ÕÌ£¤ò»ý¤Ä¡£ º£¤Î¤È¤³¤í¡¢¥·¥¹¥Æ¥à¤Ï¼Â¹Ô (execute) µö²Ä¤ò»²¾È¤·¤Ê¤¤¡£
- SHM_HUGETLB (Linux 2.6 °Ê¹ß)
- "¥Ò¥å¡¼¥¸¥Ú¡¼¥¸ (huge page)" ¤ò»È¤¦¥»¥°¥á¥ó¥È¤ò³ä¤êÅö¤Æ¤ë¡£ ¾ÜºÙ¤Ê¾ðÊó¤Ï¡¢¥«¡¼¥Í¥ë¡¦¥½¡¼¥¹¤Î¥Õ¥¡¥¤¥ë Documentation/vm/hugetlbpage.txt ¤ò»²¾È¡£
- SHM_NORESERVE (Linux 2.6.15 °Ê¹ß)
- ¤³¤Î¥Õ¥é¥°¤Ï¡¢ mmap(2) ¤Î MAP_NORESERVE ¥Õ¥é¥°¤ÈƱ¤¸Ìò³ä¤ò²Ì¤¿¤¹¡£ ¤³¤Î¥»¥°¥á¥ó¥È¤ËÂФ¹¤ë¥¹¥ï¥Ã¥×¶õ´Ö¤ÎͽÌó¤ò¹Ô¤ï¤Ê¤¤¡£ ¥¹¥ï¥Ã¥×¶õ´Ö¤òͽÌó¤·¤¿¾ì¹ç¤Ï¡¢¤½¤Î¥»¥°¥á¥ó¥È¤ÎÊѹ¹¤¬É¬¤ºÀ®¸ù¤¹¤ë¤³¤È¤¬ Êݾڤµ¤ì¤ë¡£¥¹¥ï¥Ã¥×¶õ´Ö¤ÎͽÌó¤ò¹Ô¤ï¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢ÊªÍý¥á¥â¥ê¤Ë¶õ¤¤¬ ¤Ê¤¤¤È½ñ¤¹þ¤ß»þ¤Ë SIGSEGV ¤ò¼õ¤±¼è¤ë²ÄǽÀ¤¬¤¢¤ë¡£ proc(5) ¤Ë¤¢¤ë /proc/sys/vm/overcommit_memory ¥Õ¥¡¥¤¥ë¤Ë´Ø¤¹¤ëµÄÏÀ¤â»²¾È¤Î¤³¤È¡£
¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤¬¿·¤¿¤ËºîÀ®¤µ¤ì¤ëºÝ¡¢ ¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤ÎÆâÍÆ¤Ï 0 ¤Ç½é´ü²½¤µ¤ì¡¢ ´ØÏ¢¾ðÊó¤òÊÝ»ý¤¹¤ë¥Ç¡¼¥¿¹½Â¤ÂÎ shmid_ds ¤Ï°Ê²¼¤Î¤è¤¦¤Ë½é´ü²½¤µ¤ì¤ë¡£
- shm_perm.cuid ¤È shm_perm.uid ¤Ë¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¼Â¸ú (effective) ¥æ¡¼¥¶¡¼ID ¤òÀßÄꤹ¤ë¡£
- shm_perm.cgid ¤È shm_perm.gid ¤Ë¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¼Â¸ú¥°¥ë¡¼¥×ID ¤òÀßÄꤹ¤ë¡£
- shm_perm.mode ¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤Ë shmflg ¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤òÀßÄꤹ¤ë¡£
- shm_segsz ¤Ë size ¤ÎÃͤòÀßÄꤹ¤ë¡£
- shm_lpid, shm_nattch, shm_atime, shm_dtime ¤Ë 0 ¤òÀßÄꤹ¤ë¡£
- shm_ctime ¤Ë¸½ºß¤Î»þ¹ï¤òÀßÄꤹ¤ë¡£
¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤¬´û¤Ë¸ºß¤¹¤ë¾ì¹ç¡¢¥¢¥¯¥»¥¹µö²Ä¤Î¸¡ºº¤È¡¢ Ç˲õ (destruction) ¥Þ¡¼¥¯¤¬¤Ä¤±¤é¤ì¤Æ¤¤¤Ê¤¤¤«¤Î¥Á¥§¥Ã¥¯¤¬¹Ô¤ï¤ì¤ë¡£
ÊÖ¤êÃÍ
À®¸ù¤·¤¿¾ì¹ç¡¢Í¸ú¤Ê¥»¥°¥á¥ó¥È¼±ÊÌ»Ò shmid ¤¬ÊÖ¤µ¤ì¤ë¡£¥¨¥é¡¼¤Î¾ì¹ç¡¢ -1 ¤¬ÊÖ¤µ¤ì¤ë¡£¥¨¥é¡¼
¼ºÇÔ¤·¤¿¾ì¹ç¤Ï errno ¤¬°Ê²¼¤Î¤É¤ì¤«¤ËÀßÄꤵ¤ì¤ë:- EACCES
- ¥æ¡¼¥¶¡¼¤Ï¤½¤Î¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Ø¤Î¥¢¥¯¥»¥¹µö²Ä¤ò»ý¤¿¤º¡¢ CAP_IPC_OWNER ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£
- EEXIST
- IPC_CREAT | IPC_EXCL ¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¤¬¡¢¤½¤Î¥»¥°¥á¥ó¥È¤¬´û¤Ë¸ºß¤¹¤ë¡£
- EINVAL
- ¿·¤·¤¤¥»¥°¥á¥ó¥È¤òºîÀ®¤·¤è¤¦¤È¤·¤¿ºÝ¤Ë size < SHMMIN ¤Þ¤¿¤Ï size > SHMMAX ¤Ç¤¢¤Ã¤¿¡£ ¤â¤·¤¯¤Ï¡¢»ØÄꤵ¤ì¤¿¥¡¼¤ËÂбþ¤¹¤ë¥»¥°¥á¥ó¥È¤¬´û¤Ë¸ºß¤·¤Æ¡¢¿·¤·¤¤ ¥»¥°¥á¥ó¥È¤òºîÀ®¤·¤è¤¦¤È¤Ï¤·¤Ê¤«¤Ã¤¿¤¬¡¢size ¤¬Â¸ºß¤¹¤ë¥»¥°¥á¥ó¥È¤Î ¥µ¥¤¥º¤è¤ê¤âÂ礤«¤Ã¤¿¡£
- ENFILE
- ¥·¥¹¥Æ¥àÁ´ÂΤǥª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ÎÁí¿ô¤¬¾å¸Â¤Ë㤷¤¿¡£
- ENOENT
- »ØÄꤵ¤ì¤¿ key ¤ËÂбþ¤¹¤ë¥»¥°¥á¥ó¥È¤¬Â¸ºß¤»¤º¡¢ IPC_CREAT ¤â»ØÄꤵ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£
- ENOMEM
- ¥»¥°¥á¥ó¥È¤Î´ÉÍý¾ðÊó (overhead) ¤Ë³ä¤êÅö¤Æ¤ë¥á¥â¥ê¤¬¤Ê¤«¤Ã¤¿¡£
- ENOSPC
- ¥·¥¹¥Æ¥àÁ´ÂΤζ¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¿ô¤ÎÀ©¸Â (SHMMNI) ¤Ë㤷¤¿¡¢¤Þ¤¿¤ÏÍ׵ᤵ¤ì¤¿ size ¤Î¥»¥°¥á¥ó¥È¤Î³ä¤êÅö¤Æ¤¬ ¥·¥¹¥Æ¥àÁ´ÂΤζ¦Í¥á¥â¥ê¥µ¥¤¥º¤ÎÀ©¸Â (SHMALL) ¤òĶ²á¤·¤¿¡£
- EPERM
- SHM_HUGETLB ¥Õ¥é¥°¤¬»ØÄꤵ¤ì¤¿¤¬¡¢¸Æ¤Ó½Ð¤·¸µ¤Ë¤Ï¸¢¸Â¤¬¤Ê¤«¤Ã¤¿ (CAP_IPC_LOCK ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò»ý¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿)¡£
½àµò
SVr4, POSIX.1-2001.SHM_HUGETLB ¤Ï Linux ¤Ç¤Î³ÈÄ¥¤Ç¤¢¤ê¡¢°Ü¿¢À¤Ï¤Ê¤¤¡£
Ãí°Õ
IPC_PRIVATE ¤Ï¥Õ¥é¥°¤Ç¤Ï¤Ê¤¯ key_t ·¿¤Ç¤¢¤ë¡£ ¤³¤ÎÆÃÊ̤ÊÃͤ¬ key ¤Ë»ÈÍѤµ¤ì¤¿¾ì¹ç¤Ï¡¢ shmget() ¤Ï shmflg ¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤ò½ü¤¤¤¿Á´¤Æ¤ò̵»ë¤·¡¢ (À®¸ù¤¹¤ì¤Ð) ¿·¤·¤¤¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤òºîÀ®¤¹¤ë¡£shmget() ¥³¡¼¥ë¤Ë±Æ¶Á¤¹¤ë¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È»ñ¸»¤ÎÀ©¸Â¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë:
- SHMALL
- ¥·¥¹¥Æ¥àÁ´ÂΤζ¦Í¥á¥â¥ê¡¦¥Ú¡¼¥¸¤ÎºÇÂç¿ô (Linux ¤Ç¤Ï¡¢¤³¤Î¾å¸ÂÃÍ¤Ï /proc/sys/kernel/shmall ·Ðͳ¤Ç»²¾È¤·¤¿¤ê¡¢Êѹ¹¤·¤¿¤ê¤Ç¤¤ë)¡£
- SHMMAX
- ¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Î¥Ð¥¤¥Èñ°Ì¤ÎÂ礤µ¤Î¾å¸Â: Êý¿Ë°Í¸ (Linux ¤Ç¤Ï¡¢¤³¤Î¾å¸ÂÃÍ¤Ï /proc/sys/kernel/shmmax ·Ðͳ¤Ç»²¾È¤·¤¿¤ê¡¢Êѹ¹¤·¤¿¤ê¤Ç¤¤ë)¡£
- SHMMIN
- ¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Î¥Ð¥¤¥Èñ°Ì¤ÎÂ礤µ¤Î²¼¸Â: ¼ÂÁõ°Í¸ (¸½ºß¤Ï 1 ¥Ð¥¤¥È¤À¤¬¡¢¼Â¼ÁŪ¤ÊºÇ¾®¥µ¥¤¥º¤Ï PAGE_SIZE ¤Ç¤¢¤ë)¡£
- SHMMNI
- ¥·¥¹¥Æ¥àÁ´ÂΤζ¦Í¥á¥â¥ê¡¼¤Î¿ô¤Î¾å¸Â: ¼ÂÁõ°Í¸ (¸½ºß¤Ï 4096¡£Linux 2.3.99 ¤è¤êÁ°¤Ç¤Ï 128¡£ Linux ¤Ç¤Ï¡¢¤³¤Î¾å¸ÂÃÍ¤Ï /proc/sys/kernel/shmmni ·Ðͳ¤Ç»²¾È¤·¤¿¤ê¡¢Êѹ¹¤·¤¿¤ê¤Ç¤¤ë)¡£
¥×¥í¥»¥¹Åö¤ê¤Î¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Î¸Ä¿ô¤ÎºÇÂçÃÍ (SHMSEG) ¤Ë´Ø¤¹¤ë¼ÂÁõ¾å¤ÎÀ©¸Â¤Ï¤Ê¤¤¡£
Linux ¤Ç¤ÎÃí°Õ
¥Ð¡¼¥¸¥ç¥ó 2.3.30 ¤Þ¤Ç¤Ï¡¢Linux ¤Ï ºï½ü¤¬Í½Äꤵ¤ì¤Æ¤¤¤ë¶¦Í¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤ËÂФ·¤Æ shmget() ¤¬¹Ô¤ï¤ì¤ë¤È EIDRM ¤òÊÖ¤·¤Æ¤¤¤¿¡£¥Ð¥°
IPC_PRIVATE ¤È¤¤¤¦Ì¾Á°¤òÁª¤ó¤À¤Î¤Ï¤ª¤½¤é¤¯¼ºÇԤǤ¢¤í¤¦¡£ IPC_NEW ¤ÎÊý¤¬¤è¤êÌÀ³Î¤Ë¤½¤Îµ¡Ç½¤òɽ¤·¤Æ¤¤¤ë¤À¤í¤¦¡£´ØÏ¢¹àÌÜ
shmat(2), shmctl(2), shmdt(2), ftok(3), capabilities(7), svipc(7)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre