linux man page : shmget - °øÀ¯¸Þ¸ð¸® °ø°£À» ÇÒ´çÇÑ´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
Docbook ¿ø¹®

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=shmget">shmget</a>(2)

1장. shmget(2)

°øÀ¯¸Þ¸ð¸® ¿µ¿ªÀ» ÇÒ´çÇÑ´Ù.


1.1. »ç¿ë¹ý

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

int shmget(key_t key, size_t size, int shmflg);
		


1.2. ¼³¸í

shmget()Àº ÁÖ¾îÁø ÀÎÀÚ key¸¦ Á¢±Ù¹øÈ£·Î ÇÏ´Â °øÀ¯¸Þ¸ð¸® °ø°£ÇÒ´çÀ» Ä¿³Î¿¡ ¿äûÇÑ´Ù. Ä¿³Î¿¡¼­ ¼º°øÀûÀ¸·Î °øÀ¯¸Þ¸ð¸® °ø°£À» ÇÒ´çÇÏ°Ô µÇ¸é °øÀ¯¸Þ¸ð¸®¸¦ °¡¸£Å°´Â ½Äº°ÀÚ¸¦ ¸®ÅÏÇÏ°Ô µÈ´Ù. »ý¼ºµÉ °øÀ¯¸Þ¸ð¸® °ø°£ÀÇ Å©±â´Â size¸¦ ÅëÇØ¼­ byte ´ÜÀ§ Å©±â·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. °ø°£ÀÇ ÇÒ´çÀº shmflg°¡ IPC_PRIVATEÀ̰ųª key ¸¦ °¡Áö´Â °øÀ¯¸Þ¸ð¸®¿µ¿ªÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª, IPC_CREAT°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì (shmflg&IPC_CREAT°¡ 0ÀÌ ¾Æ´Ñ)¿¡ ÀÌ·ç¾îÁø´Ù.

´ÙÀ½Àº »ç¿ë°¡´ÉÇÑ shmflg°ªµéÀÌ´Ù.

IPC_CREAT

»õ·Î¿î ¿µ¿ªÀ» ÇÒ´çÇÑ´Ù. ¸¸¾à ÀÌ °ªÀÌ »ç¿ëµÇÁö ¾Ê¾Ò´Ù¸é, shmget()Àº key·Î ÀÌ¹Ì »ý¼ºµÈ Á¢±Ù °¡´ÉÇÑ °øÀ¯¸Þ¸ð¸® ¿µ¿ªÀÌ ÀÖ´ÂÁö È®ÀÎÇϰí ÀÌ¿¡ ´ëÇÑ ½Äº°ÀÚ¸¦ µÇµ¹·ÁÁÙ °ÍÀÌ´Ù.

IPC_EXCL

IPC_CREAT¿Í ÇÔ²² »ç¿ëÇÏ¸ç °øÀ¯¸Þ¸ð¸® ¿µ¿ªÀÌ ÀÌ¹Ì Á¸ÀçÇÏ¸é ¿¡·¯¸¦ ¸®ÅÏÇÑ´Ù.

mode_flags(ÇÏÀ§ 9bit)

Á¢±Ù ±ÇÇÑÀÇ ÁöÁ¤À» À§Çؼ­ »ç¿ëÇÑ´Ù. ½ÇÇà±ÇÇÑÀº »ç¿ëÇÏÁö ¾Ê´Â´Ù.

¸¸¾à »õ·Î¿î ¿µ¿ªÀÌ »ý¼ºµÇ¾ú´Ù¸é shmflgÀÇ ±ÇÇÑÁ¤º¸´Â ¿µ¿ª¿¡ ´ëÇÑ Á¤º¸°¡ Á¤ÀǵǾî ÀÖ´Â shmid_ds ±¸Á¶Ã¼ÀÇ ¸â¹öÀÎ shm_permÀ¸·Î º¹»çµÈ´Ù. shmid_ds ±¸Á¶Ã¼´Â ¾Æ·¡¿Í °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù.

struct shmid_ds {
    struct ipc_perm shm_perm;    /* operation perms */
    int             shm_segsz;   /* size of segment (bytes) */
    time_t          shm_atime;   /* last attach time */
    time_t          shm_dtime;   /* last detach time */
    time_t          shm_ctime;   /* last change time */
    unsigned short  shm_cpid;    /* pid of creator */
    unsigned short  shm_lpid;    /* pid of last operator */
    short           shm_nattch;  /* no. of current attaches */
};

struct ipc_perm {
    key_t  key;
    ushort uid;   /* owner euid and egid */
    ushort gid;
    ushort cuid;  /* creator euid and egid */
    ushort cgid;
    ushort mode;  /* lower 9 bits of shmflg */
    ushort seq;   /* sequence number */
};
		
¸¸¾à °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀÌ ÀÌ¹Ì Á¸ÀçÇÑ´Ù¸é Á¢±Ù±ÇÇÑÀº ¼öÁ¤µÈ´Ù.


1.3. ½Ã½ºÅÛ È£Ãâ¿¡ ´ëÇÑ ¹ÝÀÀ

fork()

attacheµÈ °øÀ¯ ¸Þ¸ð¸® °ø°£Àº ÀÚ½Ä ÇÁ·Î¼¼½º¿¡°Ô »ó¼ÓµÈ´Ù.

exec()

exec()°¡ È£ÃâµÈ ÈÄ¿¡´Â ¸ðµç °øÀ¯ ¸Þ¸ð¸® °ø°£Àº detacheµÈ´Ù.

exit()

exit()ÈÄ ¸ðµç °øÀ¯ ¸Þ¸ð¸® °ø°£Àº detacheµÈ´Ù (¾ø¾î ÁöÁö´Â ¾Ê´Â´Ù).


1.4. ¹Ýȯ°ª

¼º°øÇϸé shmid¸¦ ¹Ýȯ, ½ÇÆÐÇϸé -1À» ¹ÝȯÇÑ´Ù.


1.5. ¿¡·¯

EINVAL

°øÀ¯ ¿µ¿ª»ý¼º½Ã ³Ê¹« ÀÛÀº °ø°£À» ÇÒ´ç Çϰųª(size < SHMMIN) ³Ê¹« Å« °ø°£(size > SHMMAX)À» ÇÒ´çÇßÀ» °æ¿ì

EEXIST

EACCESS

IPC_CREAT | IPC_EXCL ·Î »ý¼ºÀ» ¿äûÇߴµ¥, ÀÌ¹Ì °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀÌ Á¸ÀçÇϰí ÀÖÀ» °æ¿ì,

ENOSPC

size¸¸Å­ÀÇ °ø°£À» ÇÒ´çÇÒ ¼ö ¾øÀ» °æ¿ì. »ç¿ë°¡´ÉÇÑ °ø°£Àº SHMALL°ªÀ¸·Î Ä¿³ÎÀü¿ªÀûÀ¸·Î Á¤ÀǵǾî ÀÖ´Ù. (/usr/include/linux/shm.h Âü°í)

ENOENT

IPC_CREAT¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò´Âµ¥, ÇØ´ç key¸¦ °¡Áö´Â °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀÌ Á¸Àç ÇÏÁö ¾Ê´Â °æ¿ì

EACCESS

°øÀ¯ ¸Þ¸ð¸® ¿µ¿ª¿¡ ´ëÇÑ Á¢±Ù±ÇÇÑÀÌ ÁÖ¾îÁ® ÀÖÁö ¾Ê´Ù.

ENOMEM

ÀÌ¿ëÇÒ ¼ö ÀÖ´Â Ä¿³Î ¸Þ¸ð¸®°¡ ÃæºÐÇÏÁö ¾Ê´Ù.

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.