shm_open

Autres langues

Langue: ja

Version: 2004-12-17 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

̾Á°

shm_open, shm_unlink - POSIX ¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ÎºîÀ®/¥ª¡¼¥×¥ó¤Èºï½ü (unlink)

½ñ¼°

#include <sys/types.h>
#include <sys/mman.h>
#include <fcntl.h> /* O_* Äê¿ô¤ÎÄêµÁÍÑ */

void * shm_open(const char *name, int oflag, mode_t mode);

int shm_unlink(const char *name);

ÀâÌÀ

shm_open() ¤Ï¡¢POSIX ¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¿·µ¬¤ËºîÀ®¤·¥ª¡¼¥×¥ó¤·¤¿¤ê¡¢ ¤¹¤Ç¤Ë¸ºß¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È¤ò¥ª¡¼¥×¥ó¤·¤¿¤ê¤¹¤ë¡£ POSIX ¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¼ÂºÝ¤Ë¤Ï¡¢´Ø·¸¤Î¤Ê¤¤¥×¥í¥»¥¹¤¬ ¶¦Í­¥á¥â¥ê¤ÎƱ¤¸Îΰè¤ò mmap(2) ¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤ë¼êÃʤǤ¢¤ë¡£ shm_unlink() ¤Ï¡¢µÕ¤ÎÁàºî¡¢¤Ä¤Þ¤ê°ÊÁ°¤Ë shm_open() ¤ÇºîÀ®¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Îºï½ü¤ò¹Ô¤¦¡£

shm_open() ¤ÎÆ°ºî¤Ï open(2) ¤È¤è¤¯»÷¤Æ¤¤¤ë¡£ name ¤ÇºîÀ®¤·¤¿¤ê¥ª¡¼¥×¥ó¤·¤¿¤ê¤¹¤ë¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò»ØÄꤹ¤ë¡£ °Ü¿¢À­¤ò»ý¤¿¤»¤ë¤¿¤á¤Ë¤Ï¡¢ name ¤Ï¥¹¥é¥Ã¥·¥å (/) ¤«¤é»Ï¤Þ¤ë¤â¤Î¤Ë¤·¡¢ÅÓÃæ¤Ë¤Ï¥¹¥é¥Ã¥·¥å¤ò´Þ¤Þ¤Ê¤¤¤è¤¦¤Ë ¤¹¤Ù¤­¤Ç¤¢¤ë¡£

oflag ¤Ï¥Ó¥Ã¥È¥Þ¥¹¥¯¤Ç¡¢ O_RDONLY ¤È O_RDWR ¤Î¤¤¤º¤ì¤«°ìÊý¤È¡¢°Ê²¼¤Ë½Ò¤Ù¤ë¾¤Î¥Õ¥é¥°¤ÎÏÀÍýϤò¤È¤Ã¤¿¤â¤Î ¤ò»ØÄꤹ¤ë¡£

O_RDONLY
Æɤ߽Ф·¥¢¥¯¥»¥¹ÍѤ˥ª¥Ö¥¸¥§¥¯¥È¤ò¥ª¡¼¥×¥ó¤¹¤ë¡£ ¤³¤Î¥Õ¥é¥°¤ò»ØÄꤷ¤Æ¥ª¡¼¥×¥ó¤µ¤ì¤¿¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢ Æɤ߽Ф· (PROT_READ) ¥¢¥¯¥»¥¹¤Ç¤Î¤ß mmap(2) ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
O_RDWR
Æɤ߽ñ¤­¥¢¥¯¥»¥¹ÍѤ˥ª¥Ö¥¸¥§¥¯¥È¤ò¥ª¡¼¥×¥ó¤¹¤ë¡£
O_CREAT
¸ºß¤·¤Ê¤¤¾ì¹ç¡¢¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤¹¤ë¡£ ¥ª¥Ö¥¸¥§¥¯¥È¤Î¥æ¡¼¥¶¤È¥°¥ë¡¼¥×¤Î½êÍ­¸¢¤Ï¡¢ ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤ÎÂбþ¤¹¤ë¼Â¸ú ID ¤¬»È¤ï¤ì¡¢ ¥ª¥Ö¥¸¥§¥¯¥È¤Îµö²Ä¥Ó¥Ã¥È¤Ï mode ¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤Ë´ð¤Å¤¤¤ÆÀßÄꤵ¤ì¤ë¡£¤¿¤À¤·¡¢ ¥Õ¥¡¥¤¥ë¥â¡¼¥ÉºîÀ®¥Þ¥¹¥¯ (umask(2) »²¾È) ¤ËÀßÄꤵ¤ì¤Æ¤¤¤ëÃͤϡ¢¿·µ¬¥ª¥Ö¥¸¥§¥¯¥È¤Ë´Ø¤·¤Æ¤Ï¥¯¥ê¥¢¤µ¤ì¤ë¡£ mode ¤òÄêµÁ¤¹¤ë¤¿¤á¤Ë»ÈÍѤǤ­¤ë¥Þ¥¯¥íÄê¿ô(·²)¤Ï open(2) ¤Ëµ­ºÜ¤µ¤ì¤Æ¤¤¤ë¡£

¿·µ¬¤ËºîÀ®¤µ¤ì¤¿¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ÏŤµ 0 ¤Ç½é´ü²½¤µ¤ì¤ë¡£ ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÂ礭¤µ¤Ï ftruncate(2) ¤ò»È¤Ã¤ÆÀßÄê¤Ç¤­¤ë¡£ ¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ¿·µ¬¤Ë³ÎÊݤµ¤ì¤¿¥Ð¥¤¥È¤Ï¼«Æ°Åª¤Ë 0 ¤Ë½é´ü²½¤µ¤ì¤ë¡£

O_EXCL
O_CREAT ¤¬°ì½ï¤Ë»ØÄꤵ¤ì¤Æ¤ª¤ê¡¢ name ¤Ç»ØÄꤵ¤ì¤¿¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤¬´û¤Ë¸ºß¤·¤¿¾ì¹ç¡¢ ¥¨¥é¡¼¤òÊÖ¤¹¡£ ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸ºß³Îǧ¤È¡¢Â¸ºß¤·¤Ê¤«¤Ã¤¿¾ì¹ç¤Î¥ª¥Ö¥¸¥§¥¯¥ÈºîÀ®¤Ï¡¢ ɬ¤º°ìÏ¢¤ÎÁàºî¤È¤·¤Æ¼Â¹Ô¤µ¤ì¤ë (performed atomically)¡£
O_TRUNC
¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¹¤Ç¤Ë¸ºß¤·¤¿¾ì¹ç¡¢ ¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò 0 ¥Ð¥¤¥È¤ËÀÚ¤êµÍ¤á¤ë¡£

À®¸ù¤·¤Æ´°Î»¤·¤¿¾ì¹ç¡¢ shm_open() ¤Ï¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò»²¾È¤¹¤ë¿·¤·¤¤¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òÊÖ¤¹¡£ ¤³¤Î¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï¡¢¤½¤Î¥×¥í¥»¥¹Æâ¤Ç²áµî¤Ë¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤Ê¤¤ ¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ÎÃæ¤ÇºÇ¤â¾®¤µ¤Ê¿ô¤Ë¤Ê¤ë¤³¤È¤¬Êݾڤµ¤ì¤ë¡£ FD_CLOEXEC ¥Õ¥é¥° (fcntl(2) ¤ò»²¾È) ¤¬¡¢¤³¤Î¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ËÀßÄꤵ¤ì¤ë¡£

Ä̾¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï¡¢¤³¤Î¸å³¤±¤Æ¼Â¹Ô¤µ¤ì¤ë ftruncate(2) (¿·µ¬¤ËºîÀ®¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Î¾ì¹ç¤Î¤ß) ¤È mmap(2) ¤Î¸Æ¤Ó½Ð¤·¤Ë»ÈÍѤµ¤ì¤ë¡£ mmap(2) ¤ò¸Æ¤Ó½Ð¤·¤¿¸å¤Ï¡¢¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ò¥¯¥í¡¼¥º¤·¤Æ¤â¤è¤¯¡¢ ¥¯¥í¡¼¥º¤·¤Æ¤â¥á¥â¥ê¡¦¥Þ¥Ã¥Ô¥ó¥°¤Ë±Æ¶Á¤òÍ¿¤¨¤ë¤³¤È¤Ï¤Ê¤¤¡£

shm_unlink() ¤ÎÆ°ºî¤Ï unlink(2) ¤È¤è¤¯»÷¤Æ¤¤¤ë: ¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È̾¤òºï½ü¤·¡¢¤¹¤Ù¤Æ¤Î¥×¥í¥»¥¹¤¬½èÍýÂоݤΠ¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥ó¥Þ¥Ã¥×¤·¤¿»þÅÀ¤Ç¥ª¥Ö¥¸¥§¥¯¥È¤Î³ä¤êÅö¤Æ¤ò²ò½ü¤·¡¢ Âбþ¤¹¤ë¥á¥â¥êÎΰè¤ÎÆâÍƤòÇË´þ¤¹¤ë¡£ shm_unlink() ¤¬À®¸ù¤·¤¿¸å¤Ç¡¢Æ±¤¸ name ¤ò»ý¤Ä¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ shm_open() ¤ò¹Ô¤¦¤È¡¢ (O_CREAT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç) ¼ºÇÔ¤¹¤ë¡£ (O_CREAT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¿·¤·¤¯Ê̤Υª¥Ö¥¸¥§¥¯¥È¤¬ºîÀ®¤µ¤ì¤ë)¡£

ÊÖ¤êÃÍ

À®¸ù¤·¤¿¾ì¹ç¡¢ shm_open() ¤ÏÈóÉé¤Î¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òÊÖ¤¹¡£ ¼ºÇÔ¤·¤¿¾ì¹ç¡¢ shm_open() ¤Ï -1 ¤òÊÖ¤¹¡£ shm_unlink() ¤Ï¡¢À®¸ù¤·¤¿¾ì¹ç 0 ¤ò¡¢¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¾ì¹ç -1 ¤òÊÖ¤¹¡£

¥¨¥é¡¼

¼ºÇÔ¤·¤¿¾ì¹ç¡¢¥¨¥é¡¼¤Î¸¶°ø¤ò¼¨¤¹¤¿¤á errno ¤¬ÀßÄꤵ¤ì¤ë¡£ errno ¤ËÀßÄꤵ¤ì¤ëÃͤϰʲ¼¤ÎÄ̤ê¤Ç¤¢¤ë:
EACCES
¶¦Í­¥á¥â¥ê¥ª¥Ö¥¸¥§¥¯¥È¤ò shm_unlink() ¤¹¤ë¸¢¸Â¤¬¤Ê¤«¤Ã¤¿¡£
EACCES
»ØÄꤵ¤ì¤¿ mode ¤Ç name ¤ò shm_open() ¤¹¤ë¸¢¸Â¤¬¤Ê¤«¤Ã¤¿¡£¤â¤·¤¯¤Ï¡¢ O_TRUNC ¤¬»ØÄꤵ¤ì¤¿¤¬¡¢¸Æ¤Ó½Ð¤·¸µ¤Ë¤Ï¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ¹¤ë½ñ¤­¹þ¤ß¸¢¸Â¤¬ ¤Ê¤«¤Ã¤¿¡£
EEXIST
O_CREAT ¤È O_EXCL ¤ÎξÊý¤¬ shm_open() ¤Ë»ØÄꤵ¤ì¤¿¤¬¡¢ name ¤Ç»ØÄꤵ¤ì¤¿¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤¬´û¤Ë¸ºß¤·¤¿¡£
EINVAL
shm_open() ¤ËÍ¿¤¨¤é¤ì¤¿ name °ú¤­¿ô¤¬ÉÔÀµ¤Ç¤¢¤Ã¤¿¡£
EMFILE
¥×¥í¥»¥¹¤¬¥ª¡¼¥×¥ó²Äǽ¤Ê¥Õ¥¡¥¤¥ë¿ô¤Î¾å¸Â¤Ë¤¹¤Ç¤Ë㤷¤Æ¤¤¤¿¡£
ENAMETOOLONG
name ¤ÎŤµ¤¬ PATH_MAX ¤ò±Û¤¨¤Æ¤¤¤ë¡£
ENFILE
¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ç¥ª¡¼¥×¥ó¤Ç¤­¤ë¥Õ¥¡¥¤¥ë¿ô¤Î¾å¸Â¤Ë㤷¤¿¡£
ENOENT
¸ºß¤·¤Æ¤¤¤Ê¤¤ name ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò shm_open() ¤·¤è¤¦¤È¤·¤¿¤¬¡¢ O_CREAT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£
ENOENT
¸ºß¤·¤Ê¤¤ name ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò shm_unlink() ¤·¤è¤¦¤È¤·¤¿¡£

½àµò

POSIX.1-2001.

POSIX.1-2001 ¤Ë¤Ï¡¢¿·µ¬¤ËºîÀ®¤µ¤ì¤ë¶¦Í­¥á¥â¥ê¥ª¥Ö¥¸¥§¥¯¥È¤Î¥°¥ë¡¼¥×½êÍ­¸¢¤Ï¡¢ ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¼Â¸ú¥°¥ë¡¼¥× ID ¤« ¡Ö¥·¥¹¥Æ¥à¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥°¥ë¡¼¥× ID¡× ¤Î¤É¤Á¤é¤«¤ËÀßÄꤵ¤ì¤ë¡¢¤È½ñ¤«¤ì¤Æ¤¤¤ë¡£

Ãí°Õ

¤³¤ì¤é¤Î´Ø¿ô¤Ï glibc 2.2 °Ê¹ß¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë¡£ ¤³¤ì¤é¤Î´Ø¿ô¤ò»È¤Ã¤¿¥×¥í¥°¥é¥à¤Ç¤Ï¡¢É¬Í×¤Ê ("realtime") ¥é¥¤¥Ö¥é¥ê¤ò ¥ê¥ó¥¯¤¹¤ë¤¿¤á¤Ë cc ¤Ë -lrt ¥Õ¥é¥°¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

POSIX ¤Ï O_RDONLY ¤È O_TRUNC ¤¬°ì½ï¤Ë»ØÄꤵ¤ì¤¿¾ì¹ç¤ÎÆ°ºî¤ò̤ÄêµÁ¤Ë¤·¤Æ¤¤¤ë¡£Linux ¤Ç¤Ï¡¢ ´û¸¤Î¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ¹¤ëÀÚ¤êµÍ¤á (truncate) ¤ÏÀ®¸ù¤¹¤ë¡£ ¤·¤«¤·¡¢Â¾¤Î Unix ¥·¥¹¥Æ¥à¤Ç¤âƱ¤¸¤Ç¤¢¤ë¤È¤Ï¸Â¤é¤Ê¤¤¡£

Linux 2.4 ¤Ë¤ª¤±¤ë POSIX ¶¦Í­¥á¥â¥ê¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¼ÂÁõ¤Ï ÀìÍѤΥե¡¥¤¥ë¥·¥¹¥Æ¥à¤ò»ÈÍѤ¹¤ë¡£¤½¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÏÄ̾ï /dev/shm ¤Ë¥Þ¥¦¥ó¥È¤µ¤ì¤ë¡£

´ØÏ¢¹àÌÜ

close(2), fchmod(2), fchown(2), fcntl(2), fstat(2), ftruncate(2), mmap(2), open(2), umask(2)