shmctl

Autres langues

Langue: ja

Version: 2005-05-30 (openSuse - 09/10/07)

Section: 2 (Appels système)

̾Á°

shmctl - ¶¦Í­¥á¥â¥ê (shared memory) ¤òÀ©¸æ¤¹¤ë

½ñ¼°

#include <sys/ipc.h> #include <sys/shm.h>

int shmctl(int shmid, int cmd, struct shmid_ds *buf);

ÀâÌÀ

shmctl() ¤Ï¡¢¼±Ê̻Ҥ¬ shmid ¤Î¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤ËÂФ·¤Æ cmd ¤Ç»Ø¼¨¤·¤¿À©¸æÌ¿Îá¤ò¼Â¹Ô¤¹¤ë¡£

buf °ú¤­¿ô¤Ï¡¢ shmid_ds ¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ë¡£ ¤³¤Î¹½Â¤ÂÎ¤Ï <sys/shm.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë


struct shmid_ds {

    struct ipc_perm shm_perm;    /* ½êÍ­¸¢¤Èµö²Ä */

    size_t          shm_segsz;   /* ¥»¥°¥á¥ó¥È¤Î¥µ¥¤¥º (¥Ð¥¤¥È) */

    time_t          shm_atime;   /* ºÇ¸å¤ÎÉղà (attach) ¤Î»þ¹ï */

    time_t          shm_dtime;   /* ºÇ¸å¤ÎʬΥ (detach) ¤Î»þ¹ï */

    time_t          shm_ctime;   /* ºÇ¸å¤ËÊѹ¹¤¬¹Ô¤ï¤ì¤¿»þ¹ï */

    pid_t           shm_cpid;    /* ºîÀ®¼Ô (creator) ¤Î PID */

    pid_t           shm_lpid;    /* ºÇ¸å¤Î shmat(2)/shmdt(2) ¤Î PID */

    shmatt_t        shm_nattch;  /* ¸½ºßÉղ䵤ì¤Æ¤¤¤ë¿ô */

    ...

};

ipc_perm ¹½Â¤ÂÎ¤Ï <sys/ipc.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë (¶¯Ä´¤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É¤Ï IPC_SET ¤ò»È¤Ã¤ÆÀßÄê²Äǽ¤Ç¤¢¤ë):


struct ipc_perm {

    key_t key;            /* shmget(2) ¤ËÍ¿¤¨¤é¤ì¤ë¥­¡¼ */

    uid_t uid;            /* ½êÍ­¼Ô¤Î¼Â¸ú UID */

    gid_t gid;            /* ½êÍ­¼Ô¤Î¼Â¸ú GID */

    uid_t cuid;           /* ºîÀ®¼Ô¤Î¼Â¸ú UID */

    gid_t cgid;           /* ºîÀ®¼Ô¤Î¼Â¸ú GID */

    unsigned short mode;  /* µö²Ä + SHM_DEST ¤È

                             SHM_LOCKED ¥Õ¥é¥° */

    unsigned short seq;   /* ¥·¡¼¥±¥ó¥¹ÈÖ¹æ */

};

cmd ¤È¤·¤ÆÍ­¸ú¤ÊÃͤϰʲ¼¤ÎÄ̤ê:

IPC_STAT
shmid ¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿¥«¡¼¥Í¥ë¥Ç¡¼¥¿¹½Â¤ÂΤξðÊó¤ò buf ¤Ç»Ø¤µ¤ì¤¿ shmid_ds ¹½Â¤ÂΤ˥³¥Ô¡¼¤¹¤ë¡£ ¸Æ¤Ó½Ð¤·¸µ¤Ï¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤ËÂФ¹¤ë Æɤ߹þ¤ßµö²Ä¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
IPC_SET
buf ¤Ë¤è¤Ã¤Æ»Ø¤µ¤ì¤ë shmid_ds ¹½Â¤ÂΤΤ¤¤¯¤Ä¤«¤Î¥á¥ó¥Ð¡¼¤ÎÃͤò¡¢ ¤³¤Î¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿¥«¡¼¥Í¥ë¥Ç¡¼¥¿¹½Â¤ÂΤ˽ñ¤­¹þ¤ß¡¢ shm_ctime ¥á¥ó¥Ð¡¼¤â¹¹¿·¤¹¤ë¡£ °Ê²¼¤Î¥Õ¥£¡¼¥ë¥É¤ÏÊѹ¹¤Ç¤­¤ë¡£ shm_perm.uid, shm_perm.gid, shm_perm.mode (¤ÎºÇ²¼°Ì 9 ¥Ó¥Ã¥È)¡£ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú UID ¤¬½êÍ­¼Ô (shm_perm.uid) ¤Þ¤¿¤ÏºîÀ®¼Ô (shm_perm.cuid) ¤È°ìÃפ¹¤ë¤«¡¢¸Æ¤Ó½Ð¤·¸µ¤¬Æø¢¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
IPC_RMID
¥»¥°¥á¥ó¥È¤ËÇË´þºÑ¤ß¤Î¥Þ¡¼¥¯¤òÉÕ¤±¤ë¡£ ¥»¥°¥á¥ó¥È¤Ï¡¢¼ÂºÝ¤Ë¤ÏºÇ¸å¥×¥í¥»¥¹¤¬¥»¥°¥á¥ó¥È¤òʬΥ¤·¤¿ (´ØÏ¢¤¹¤ë shmid_ds ¹½Â¤ÂΤΠshm_nattch ¥á¥ó¥Ð¡¼¤¬ 0 ¤Ë¤Ê¤Ã¤¿) ¸å¤Ç¤Î¤ßÇË´þ¤µ¤ì¤ë¡£ ¸Æ¤Ó½Ð¤·¸µ¤Ï½êÍ­¼Ô¤«ºîÀ®¼Ô¤Ç¤¢¤ë¤«¡¢Æø¢¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¥»¥°¥á¥ó¥È¤ËÇË´þ¤Î¥Þ¡¼¥¯¤¬ÉÕ¤±¤é¤ì¤ë¤È¡¢ ´ØÏ¢¤¹¤ë¥Ç¡¼¥¿¹½Â¤ÂΤˤª¤¤¤Æ shm_perm.mode ¥Õ¥£¡¼¥ë¥É¤Î (ɸ½à¤Ç¤Ï¤Ê¤¤) SHM_DEST ¥Õ¥é¥°¤¬ÀßÄꤵ¤ì¤ë¡£ ¤³¤Î¥Ç¡¼¥¿¹½Â¤ÂÎ¤Ï IPC_STAT ¤Ç¼èÆÀ¤µ¤ì¤ë¡£

¸Æ¤Ó½Ð¤·¸µ¤ÏºÇ½ªÅª¤Ë¤Ï¥»¥°¥á¥ó¥È¤ò˺¤ì¤º¤ËÇË´þ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¤½¤¦¤Ç¤Ê¤ì¤Ð¡¢¥Õ¥©¡¼¥ë¥È (fault) ¤µ¤ì¤¿¥Ú¡¼¥¸¤Ï ¥á¥â¥ê¤«¥¹¥ï¥Ã¥× (swap) ¤Ë»Ä¤ê³¤±¤ë¡£

IPC_INFO (Linux ¸ÇÍ­)
¥·¥¹¥Æ¥àÁ´ÂΤǤζ¦Í­¥á¥â¥ê¤ÎÀ©¸Â¤È¥Ñ¥é¥á¡¼¥¿¤Ë´Ø¤¹¤ë¾ðÊó¤ò¡¢ buf ¤¬»Ø¤¹¹½Â¤ÂΤËÆþ¤ì¤ÆÊÖ¤¹¡£ ¤³¤Î¹½Â¤ÂÎ¤Ï shminfo ·¿¤Ç¤¢¤ë (¤½¤Î¤¿¤á¥­¥ã¥¹¥È¤¬É¬ÍפǤ¢¤ë)¡£ shminfo ¤Ï _GNU_SOURCE µ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤¿¾ì¹ç¤Ë <sys/shm.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤ë:



struct  shminfo {

    unsigned long shmmax; /* ºÇÂ祻¥°¥á¥ó¥È¥µ¥¤¥º */

    unsigned long shmmin; /* ºÇ¾®¥»¥°¥á¥ó¥È¥µ¥¤¥º¡£¾ï¤Ë 1 */

    unsigned long shmmni; /* ºÇÂ祻¥°¥á¥ó¥È¿ô */

    unsigned long shmseg; /* ¥×¥í¥»¥¹¤¬ÉղäǤ­¤ë¥»¥°¥á¥ó¥È¤Î

                             ºÇÂç¿ô¡£Ì¤»ÈÍÑ */

    unsigned long shmall; /* ¶¦Í­¥á¥â¥ê¤ÎºÇÂç¥Ú¡¼¥¸¿ô¡£

                             ¥·¥¹¥Æ¥àÁ´ÂΤǤÎÃÍ */

};



ÀßÄê shmmni, shmmax, shmall ¤Ï /proc ¤Ë¤¢¤ëƱ¤¸Ì¾Á°¤Î¥Õ¥¡¥¤¥ë·Ðͳ¤ÇÊѹ¹²Äǽ¤Ç¤¢¤ë¡£ ¾Ü¤·¤¯¤Ï proc(5) ¤ò»²¾È¡£
SHM_INFO (Linux ¸ÇÍ­)
¶¦Í­¥á¥â¥ê¤¬¾ÃÈñ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à»ñ¸»¤Ë´Ø¤¹¤ë¾ðÊó¤ò ³ÊǼ¤·¤¿ shm_info ¹½Â¤ÂΤòÊÖ¤¹¡£ ¤³¤Î¹½Â¤ÂΤϡ¢_GNU_SOURCE µ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤¿¾ì¹ç¤Ë <sys/shm.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤ë:



struct shm_info {

    int used_ids;           /* ¸½ºß¸ºß¤¹¤ë¥»¥°¥á¥ó¥È¿ô */

    unsigned long shm_tot;  /* ¶¦Í­¥á¥â¥ê¤Î¥Ú¡¼¥¸Áí¿ô */

    unsigned long shm_rss;  /* ¥á¥â¥ê¾å¤Ë¤¢¤ë (¥¹¥ï¥Ã¥×¤µ¤ì¤Æ

                               ¤¤¤Ê¤¤) ¶¦Í­¥á¥â¥ê¥Ú¡¼¥¸¿ô */

    unsigned long shm_swp;  /* ¥¹¥ï¥Ã¥×¤µ¤ì¤Æ¤¤¤ë¶¦Í­¥á¥â¥ê

                               ¥Ú¡¼¥¸¿ô */

    unsigned long swap_attempts;  /* Linux 2.4 °Ê¹ß¤Ç¤Ï̤»ÈÍÑ */

    unsigned long swap_successes; /* Linux 2.4 °Ê¹ß¤Ç¤Ï̤»ÈÍÑ */

};

SHM_STAT (Linux ¸ÇÍ­)
IPC_STAT ¤ÈƱ¤¸¤¯ shmid_ds ¹½Â¤ÂΤòÊÖ¤¹¡£ ⤷¡¢ shmid °ú¤­¿ô¤Ï¡¢¥»¥°¥á¥ó¥È¼±Ê̻ҤǤϤʤ¯¡¢¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¶¦Í­¥á¥â¥ê ¥»¥°¥á¥ó¥È¤Ë´Ø¤¹¤ë¾ðÊó¤ò´ÉÍý¤¹¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Ø¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹ ¤Ç¤¢¤ë¡£

¸Æ¤Ó½Ð¤·¸µ¤Ï¡¢cmd ¤Ë°Ê²¼¤ÎÃͤò»ØÄꤹ¤ë¤³¤È¤Ç¡¢¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤¬ ¥¹¥ï¥Ã¥×¤µ¤ì¤ë¤³¤È¤òËɻߤ·¤¿¤ê¡¢µö²Ä¤·¤¿¤ê¤Ç¤­¤ë:

SHM_LOCK (Linux ¸ÇÍ­)
¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤ò¥¹¥ï¥Ã¥×¤¹¤ë¤³¤È¤òËɻߤ¹¤ë¡£ ¥í¥Ã¥¯¤¬Í­¸ú¤Ë¤Ê¤Ã¤¿¸å¡¢¸Æ¤Ó½Ð¤·¸µ¤Ï¡¢ ¸ºß¤¹¤ë¤³¤È¤¬Í׵ᤵ¤ì¤¿Á´¤Æ¤Î¥Ú¡¼¥¸¤ò¥Õ¥©¡¼¥ë¥È¤µ¤»¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¥»¥°¥á¥ó¥È¤¬¥í¥Ã¥¯¤µ¤ì¤ë¤È¡¢ ´ØÏ¢¤¹¤ë¥Ç¡¼¥¿¹½Â¤ÂΤˤª¤¤¤Æ shm_perm.mode ¥Õ¥£¡¼¥ë¥É¤Î (ɸ½àŪ¤Ç¤Ï¤Ê¤¤) SHM_LOCKED ¥Õ¥é¥°¤¬ÀßÄꤵ¤ì¤ë¡£ ¤³¤Î¥Ç¡¼¥¿¹½Â¤ÂÎ¤Ï IPC_STAT ¤Ç¼èÆÀ¤µ¤ì¤ë¡£
SHM_UNLOCK (Linux ¸ÇÍ­)
¥»¥°¥á¥ó¥È¤Î¥í¥Ã¥¯¤ò²ò½ü¤·¡¢¥¹¥ï¥Ã¥×¡¦¥¢¥¦¥È¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤¹¤ë¡£

2.6.10 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢Æø¢¥×¥í¥»¥¹¤À¤±¤¬ SHM_LOCK ¤È SHM_UNLOCK ¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤¿¡£ 2.6.10 °Ê¹ß¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢ÈóÆø¢¥×¥í¥»¥¹¤Ç¤¢¤Ã¤Æ¤â¼¡¤Î¾ò·ï¤òËþ¤¿¤»¤Ð ¤³¤ì¤é¤ÎÁàºî¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤½¤Î¾ò·ï¤È¤Ï¡¢¥×¥í¥»¥¹¤Î¼Â¸ú UID ¤¬¤½¤Î¥»¥°¥á¥ó¥È¤Î½êÍ­¼Ô¤â¤·¤¯¤ÏºîÀ®¼Ô¤Î UID ¤È°ìÃפ·¡¢ (SHM_LOCK ¤Î¾ì¹ç¤Ë¤Ï) ¥í¥Ã¥¯¤¹¤ë¥á¥â¥ê¤Î¹ç·×¤¬ RLIMIT_MEMLOCK ¥ê¥½¡¼¥¹¾å¸Â (setrlimit(2) »²¾È) ¤ÎÈÏ°ÏÆâ¤ËÆþ¤Ã¤Æ¤¤¤ë¤³¤È¤Ç¤¢¤ë¡£

ÊÖ¤êÃÍ

IPC_INFO ¤È SHM_INFO Áàºî¤Ï¡¢À®¸ù¤¹¤ë¤È¡¢Á´¤Æ¤Î¶¦Í­¥á¥â¥ê¥»¥°¥á¥ó¥È¤Ë´Ø¤¹¤ë¾ðÊó¤ò ´ÉÍý¤·¤Æ¤¤¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Î»ÈÍÑÃ楨¥ó¥È¥ê¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î ¤¦¤ÁºÇÂçÃͤòÊÖ¤¹ (¤³¤Î¾ðÊó¤Ï¡¢¥·¥¹¥Æ¥à¤ÎÁ´¤Æ¤Î¶¦Í­¥á¥â¥ê¥»¥°¥á¥ó¥È¤Ë´Ø¤¹¤ë¾ðÊó¤ò ¼èÆÀ¤¹¤ë¤¿¤á¤Ë¡¢ SHM_STAT Áàºî¤ò·«¤êÊÖ¤·¼Â¹Ô¤¹¤ëºÝ¤Ë»ÈÍѤǤ­¤ë)¡£ SHM_STAT Áàºî¤Ï¡¢À®¸ù¤¹¤ë¤È¡¢ shmid ¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ý¤Ä¶¦Í­¥á¥â¥ê¥»¥°¥á¥ó¥È¤Î¼±Ê̻ҤòÊÖ¤¹¡£ ¾¤ÎÁàºî¤Ï¡¢À®¸ù¤Î¾ì¹ç 0 ¤òÊÖ¤¹¡£

¥¨¥é¡¼¤Î¾ì¹ç¤Ï -1 ¤òÊÖ¤·¡¢ errno ¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£

¥¨¥é¡¼

EACCES

IPC_STAT ¤Þ¤¿¤Ï SHM_STAT ¤¬Í׵ᤵ¤ì¡¢ shm_perm.mode ¤¬ shmid ¤Ø¤ÎÆɤ߹þ¤ß¥¢¥¯¥»¥¹¤òµö¤·¤Æ¤ª¤é¤º¡¢ ¤«¤Ä¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬ CAP_IPC_OWNER ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£ (capability) ¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£

EFAULT
cmd °ú¤­¿ô¤Ë IPC_SET ¤« IPC_STAT ¤¬»ØÄꤵ¤ì¤¿¤¬ buf ¤Ç»Ø¤µ¤ì¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡£
EIDRM
shmid ¤¬ºï½ü (remove) ¤µ¤ì¤¿¼±ÊÌ»Ò (identifier) ¤ò»Ø¤·¤Æ¤¤¤ë¡£
EINVAL
shmid ¤¬Í­¸ú¤Ê¼±Ê̻ҤǤʤ¤¤«¡¢ cmd ¤¬Í­¸ú¤Ê¥³¥Þ¥ó¥É¤Ç¤Ê¤¤¡£ ¤â¤·¤¯¤Ï¡¢ SHM_STAT Áàºî¤Î¾ì¹ç¤Ë¡¢ shmid ¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹Ãͤ¬¸½ºß̤»ÈÍѤÎÇÛÎó¤Î¥¹¥í¥Ã¥È¤ò»²¾È¤·¤Æ¤¤¤¿¡£
ENOMEM
(2.6.9 °Ê¹ß¤Î¥«¡¼¥Í¥ë¤Ë¤ª¤¤¤Æ) SHM_LOCK ¤¬»ØÄꤵ¤ì¡¢ ¥í¥Ã¥¯¤µ¤ì¤ëͽÄê¤Î¥»¥°¥á¥ó¥È¤Î¥µ¥¤¥º (¥í¥Ã¥¯¤µ¤ì¤ë¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Î¹ç·×¥Ð¥¤¥È¿ô) ¤¬¡¢ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¥æ¡¼¥¶¡¼ ID ¤Ë¤Ä¤¤¤Æ¤ÎÀ©¸Â¤òĶ¤¨¤¿¡£ ¤³¤ÎÀ©¸Â¤Ï RLIMIT_MEMLOCK ¥½¥Õ¥È»ñ¸»À©¸Â¤ÇÄêµÁ¤µ¤ì¤ë (setrlimit(2) ¤ò»²¾È)¡£
EOVERFLOW
IPC_STAT ¤¬»î¤ß¤é¤ì¡¢GID ¤ä UID ¤ÎÃͤ¬ buf ¤Ç»Ø¼¨¤µ¤ì¤ë¹½Â¤ÂΤ˳ÊǼ¤¹¤ë¤Ë¤ÏÂ礭²á¤®¤ë¡£
EPERM
IPC_SET ¤« IPC_RMID ¤¬»î¤ß¤é¤ì¡¢ ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶¡¼ ID ¤¬ºîÀ®¼Ô (shm_perm.cuid) ¤Ç¤â½êÍ­¼Ô (shm_perm.uid) ¤Ç¤â¤Ê¤¯¡¢¥×¥í¥»¥¹¤¬Æø¢¤ò»ý¤¿¤Ê¤¤ (Linux ¤Ç¤Ï CAP_SYS_ADMIN ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò»ý¤¿¤Ê¤¤)¡£

¤Þ¤¿¤Ï (2.6.9 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç) SHM_LOCK ¤Þ¤¿¤Ï SHM_UNLOCK ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤¬¡¢¥×¥í¥»¥¹¤¬Æø¢¤ò»ý¤¿¤Ê¤¤ (Linux ¤Ç¤Ï CAP_IPC_LOCK ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò»ý¤¿¤Ê¤¤)¡£ (Linux 2.6.9 °Ê¹ß¤Ç¤Ï¡¢ RLIMIT_MEMLOCK ¤¬ 0 ¤Ç¸Æ¤Ó½Ð¤·¸µ¤¬Æø¢¤ò»ý¤¿¤Ê¤¤¾ì¹ç¤Ë¤â¡¢¤³¤Î¥¨¥é¡¼¤¬µ¯¤³¤ë¡£)

½àµò

SVr4, POSIX.1-2001.

Ãí°Õ

IPC_INFO, SHM_STAT, SHM_INFO Áàºî¤Ï¡¢ ipcs(8) ¥×¥í¥°¥é¥à¤Ç³ä¤êÅö¤ÆºÑ¤Î»ñ¸»¤Ë´Ø¤¹¤ë¾ðÊó¤òÄ󶡤¹¤ë¤¿¤á¤Ë »ÈÍѤµ¤ì¤Æ¤¤¤ë¡£¾­Íè¡¢¤³¤ì¤é¤ÎÁàºî¤ÏÊѹ¹¤µ¤ì¤¿¤ê¡¢ /proc ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë°ÜÆ°¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£

Linux ¤Ç¤Ï¡¢ shmctl(IPC_RMID) ¤ò»È¤Ã¤Æ¤¹¤Ç¤Ëºï½ü¥Þ¡¼¥¯¤¬¤Ä¤±¤é¤ì¤Æ¤¤¤ë¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤ò ¤¢¤ë¥×¥í¥»¥¹¤¬Éղà (attach) (shmat(2)) ¤¹¤ë¤³¤È¤òµö²Ä¤·¤Æ¤¤¤ë¡£ ¤³¤Îµ¡Ç½¤Ï¾¤Î Unix ¤Î¼ÂÁõ¤Ç¤ÏÍøÍѤǤ­¤Ê¤¤¡£ °Ü¿¢À­¤ò¹Íθ¤·¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¤³¤ì¤Ë°Í¸¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤Ù¤­¤Ç¤¢¤ë¡£

¹½Â¤ÂÎ shmid_ds Æâ¤Î¿¤¯¤Î¥Õ¥£¡¼¥ë¥É¤Ï¡¢ Linux 2.2 ¤Ç¤Ïû¤«¤Ã¤¿¤¬¡¢Linux 2.4 ¤Ç¤ÏŤ¯¤Ê¤Ã¤¿¡£ ¤³¤ÎÍøÅÀ¤òÀ¸¤«¤¹¤Ë¤Ï¡¢glibc-2.1.91 °Ê¹ß¤Î´Ä¶­²¼¤Ç ºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ì¤Ð½½Ê¬¤Ç¤¢¤ë¡£ ¥«¡¼¥Í¥ë¤Ï¿·¤·¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤È¸Å¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤ò cmd Æâ¤Î IPC_64 ¥Õ¥é¥°¤Ç¶èÊ̤¹¤ë¡£

´ØÏ¢¹àÌÜ

mlock(2), setrlimit(2), shmget(2), shmop(2), capabilities(7)