SHMGET

Section: ¸®´ª½º ÇÁ·Î±×·¡¸Ó ¸Þ´º¾ó (2)
Updated: November 28, 1993
Index
Return to Main Contents
 

À̸§

shmget - °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®¸¦ ÇÒ´çÇÑ´Ù.  

»ç¿ë¹ý

#include <sys/ipc.h>

#include <sys/shm.h>

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

¼³¸í

shmget() ´Â key ÀÎÀÚ°ª°ú °ü·ÃµÈ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ® ½Äº°ÀÚ¸¦ ¹ÝȯÇÑ´Ù. ¸¸ÀÏ, key °¡ IPC_PRIVATE °ªÀ» °¡Áö°í Àְųª ¶Ç´Â key °¡ IPC_PRIVATE °¡ ¾Æ´Ï°í, key ¿Í ¿¬°èµÇ¾î ÀÖ´Â °øÀ¯¸Þ¸ð¸® ¼¼±×¸ÕÆ®°¡ ¾ø´Ù¸é PAGE_SIZE ÀÇ ¹è¼ö¸¸Å­ÀÇ size ¸¦ °¡Áö°í ÀÖ´Â »õ·Î¿î °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®°¡ ¸¸µé¾îÁø´Ù. IPC_CREAT ´Â shmflg ¿¡ ¸í½ÃµÇ¾î ÀÖ´Ù. (Áï, shmflg&IPC_CREAT ´Â 0ÀÌ ¾Æ´Ï´Ù.)

shmflg ÀÇ ±¸¼ºÀº ´ÙÀ½°ú °°´Ù:

IPC_CREAT
»õ·Î¿î ¼¼±×¸ÕÆ®¸¦ ¸¸µç´Ù. ¸¸ÀÏ ÀÌ Ç÷¡±×°¡ »ç¿ëµÇÁö ¾Ê´Â´Ù¸é, shmget() ´Â key¿Í °ü·ÃµÈ ¼¼±×¸ÕÆ®¸¦ ãÀ» °ÍÀ̸ç, »ç¿ëÀÚ°¡ ±× ¼¼±×¸ÕÆ®¿Í °ü·ÃµÈ shmid ¸¦ ¹ÞÀ» Çã°¡±ÇÀÌ ÀÖ´ÂÁö ¾Ë±â À§Çؼ­ °Ë»çÇÑ´Ù. ±×¸®°í ¼¼±×¸ÕÆ®°¡ Æı«µÇ¾ú´Ù´Â Ç¥½Ã¸¦ ÇÏÁö ¾Êµµ·Ï º¸ÀåÇÑ´Ù.
IPC_EXCL
¼¼±×¸ÕÆ®°¡ Á¸ÀçÇÒ°æ¿ì ½ÇÆи¦ º¸ÀåÇϱâ À§ÇØ IPC_CREAT¿Í ÇÔ²² »ç¿ëµÈ´Ù.
mode_flags (lowest 9 bits)
¼ÒÀ¯ÀÚ, ±×·ì, ±× ¿ÜµéÀ» º¸ÀåÇϱâ À§ÇØ Çã°¡±ÇÀ» ÁöÁ¤ÇÑ´Ù. ÇöÀç, ½ÇÇà Çã°¡±ÇÀº ½Ã½ºÅÛ¿¡ ÀÇÇØ »ç¿ëµÇÁö ¾Ê´Â´Ù.

»õ·Î¿î ¼¼±×¸ÕÆ®°¡ »ý¼ºµÈ´Ù¸é, shmflg ÀÇ Á¢±Ù Çã°¡±ÇÀº ¼¼±×¸ÕÆ®¿¡ Á¤ÀǵǾî ÀÖ´Â shmid_ds ÀÇ shm_perm ¸â¹ö·Î º¹»çµÈ´Ù. shmid_ds ±¸Á¶Ã¼:

struct shmid_ds {
        struct  ipc_perm shm_perm;      /* ÆÛ¹Ì¼Ç */
        int     shm_segsz;              /* ¼¼±×¸ÕÆ®ÀÇ Å©±â(bytes) */
        time_t  shm_atime;              /* ¸¶Áö¸· Á¢±Ù ½Ã°£ */
        time_t  shm_dtime;              /* ¸¶Áö¸· Á¦°Å ½Ã°£ */
        time_t  shm_ctime;              /* ¸¶Áö¸· º¯°æ ½Ã°£ */
        unsigned short  shm_cpid;       /* »ý¼ºÀÚÀÇ pid */
        unsigned short  shm_lpid;       /* ¸¶Áö¸·À¸·Î ÀÛµ¿ÇÑ ÇÁ·Î¼¼½º pid */
        short   shm_nattch;             /* ÇöÀç Á¢±ÙÇÑ ÇÁ·Î¼¼½ºÀÇ ¼ö */
};

struct ipc_perm
{
  key_t  key;
  ushort uid;   /* ¼ÒÀ¯ÀÚÀÇ euid ¿Í egid */
  ushort gid;
  ushort cuid;  /* »ý¼ºÀÚÀÇ euid ¿Í egid */
  ushort cgid;
  ushort mode;  /* shmflgÀÇ ÇÏÀ§ 9ºñÆ® */
  ushort seq;   /* ¿¬¼Ó ¼ö(sequence number) */
};

°Ô´Ù°¡, »ý¼ºµÇ´Â µ¿¾È ½Ã½ºÅÛ ÄÝÀº ½Ã½ºÅÛ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ® µ¥ÀÌÅÍ ±¸Á¶ shmid_ds ¸¦ ´ÙÀ½°ú °°ÀÌ ÃʱâÈ­ÇÑ´Ù.

shm_perm.cuid ¿Í shm_perm.uid ´Â È£Ãâ ÇÁ·Î¼¼½ºÀÇ À¯È¿ user-ID·Î ¼³Á¤µÈ´Ù.
shm_perm.cgid ¿Í shm_perm.gid ´Â È£Ãâ ÇÁ·Î¼¼½ºÀÇ À¯È¿ group-ID·Î ¼³Á¤µÈ´Ù.
shm_perm.mode ÀÇ ÇÏÀ§ 9ºñÆ®µéÀº shmflg ÀÇ ÇÏÀ§ 9ºñÆ®µé·Î ¼³Á¤µÈ´Ù.
shm_segsz ´Â size °ªÀ¸·Î ¼³Á¤µÈ´Ù.
shm_lpid, shm_nattch, shm_atime ±×¸®°í shm_dtime ´Â 0 À¸·Î ¼³Á¤µÈ´Ù.
shm_ctime ´Â ÇöÀç ½Ã°£À¸·Î ¼³Á¤µÈ´Ù.

¸¸ÀÏ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®°¡ ÀÌ¹Ì Á¸ÀçÇÑ´Ù¸é, Á¢±Ù Çã°¡±ÇÀÌ Á¶»çµÇ¸ç, Æı«µµµµ·Ï Ç¥½ÃµÇ¾î ÀÖ´ÂÁö ¾Ë¾Æº¸±â À§ÇØ °Ë»çÇÑ´Ù.

 

SYSTEM CALLS

fork()
fork() ÈÄ¿¡ ÀÚ½Ä ÇÁ·Î¼¼½º´Â ¿¬°áµÈ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®µéÀ» »ó¼ÓÇÑ´Ù.
exec()
exec() ÈÄ¿¡ ¿¬°áµÈ ¸ðµç °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®´Â ºÐ¸®µÈ´Ù.(Æı«µÇ´Â°ÍÀÌ ¾Æ´Ï´Ù)
exit()
exit() ½Ã ¿¬°áµÈ ¸ðµç °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®´Â ºÐ¸®µÈ´Ù.(Æı«µÇ´Â°ÍÀÌ ¾Æ´Ï´Ù)

 

¹Ýȯ°ª

¼º°ø½Ã À¯È¿ÇÑ ¼¼±×¸ÕÆ® ½Äº°ÀÚ shmid °¡ ¹ÝȯµÇ¸ç, ¿¡·¯½Ã -1ÀÌ ¹ÝȯµÈ´Ù.  

¿¡·¯

½ÇÆнÃ, errno ´Â ´ÙÀ½Áß Çϳª·Î ¼³Á¤µÈ´Ù:
EINVAL
¸¸ÀÏ SHMMIN > size, ¶Ç´Â size > SHMMAX, ¶Ç´Â sizeÀÌ ¼¼±×¸ÕÆ®ÀÇ Å©±âº¸´Ù Å©´Ù¸é ÀÌ ¿¡·¯°¡ ¹ÝȯµÈ´Ù.
EEXIST
IPC_CREAT | IPC_EXCL ÀÌ ÁöÁ¤µÇ¾î ÀÖ°í, ¼¼±×¸ÕÆ®°¡ Á¸ÀçÇϸé ÀÌ ¿¡·¯°¡ ¹ÝȯµÈ´Ù.
EIDRM
¼¼±×¸ÕÆ®°¡ Æı«³ª Á¦°ÅµÇµµ·Ï Ç¥½ÃµÇ¾î ÀÖ´Ù¸é ÀÌ ¿¡·¯°¡ ¹ÝȯµÈ´Ù.
ENOSPC
°¡´ÉÇÑ ¸ðµç °øÀ¯ ¸Þ¸ð¸® id (SHMMNI) ¸¦ °¡Á³°Å³ª ¿äûµÈ size ÀÇ ¼¼±×¸ÕÆ® ÇÒ´çÀÌ ½Ã½ºÅÛ Àüü °øÀ¯ ¸Þ¸ð¸® Á¦ÇÑ°ª (SHMALL) À» ÃÊ°úÇÒ°æ¿ì ¹ÝȯµÈ´Ù.
ENOENT
ÁÖ¾îÁø key¿¡ ÇØ´çÇÏ´Â ¼¼±×¸ÕÆ®°¡ Á¸ÀçÇÏÁö ¾Ê°í, IPC_CREAT °¡ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é ¹ÝȯµÈ´Ù.
EACCES
»ç¿ëÀÚ°¡ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®¿¡ ´ëÇÑ Á¢±Ù Çã°¡±ÇÀÌ ¾øÀ»¶§ ¹ÝȯµÈ´Ù.
ENOMEM
¼¼±×¸ÕÆ®¸¦ À§ÇØ ÇÒ´çÇÒ ¸Þ¸ð¸®°¡ ¾øÀ»¶§ ¹ÝȯµÈ´Ù.
 

ÁÖÀÇ

IPC_PRIVATE ´Â Ç÷¹±× Çʵ尡 ¾Æ´Ï¶ó key_t ŸÀÔÀÌ´Ù. ÀÌ Æ¯º°ÇÑ °ªÀÌ key ¿¡ »ç¿ëµÈ´Ù¸é, ½Ã½ºÅÛ ÄÝÀº shmflg ÀÇ ÇÏÀ§ 9ºñÆ®µé¿Ü ¸ðµç°ÍÀ» ¹«½ÃÇÑ´Ù. ±×¸®°í »õ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®¸¦ »ý¼º(¼º°ø½Ã)ÇÑ´Ù.

´ÙÀ½Àº shmget ½Ã½ºÅÛ ÄÝ¿¡ ¿µÇâÀ» ÁÖ´Â °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ® ÀÚ¿øµéÀÇ Á¦ÇÑ°ªµéÀÌ´Ù:

SHMALL
½Ã½ºÅÛ ÀüüÀÇ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ® ÃÖ´ë °ª: Á¤Ã¥ ÀÇÁ¸ÀûÀÌ´Ù.
SHMMAX
°øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®ÀÇ ÃÖ´ë Å©±â(¹ÙÀÌÆ®¼ö): ¼öÇà ÀÇÁ¸ÀûÀÌ´Ù.(ÇöÀç 4M)
SHMMIN
°øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®ÀÇ ÃÖ¼Ò Å©±â(¹ÙÀÌÆ®¼ö): ¼öÇà ÀÇÁ¸ÀûÀÌ´Ù.( PAGE_SIZE °¡ À¯È¿ÇÑ ÃÖ¼Ò Å©±âÀÌÁö¸¸, ÇöÀç´Â 1byteÀÌ´Ù.)
SHMMNI
½Ã½ºÅÛ ÀüüÀÇ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ® ÃÖ´ë ¼ö: ¼öÇà ÀÇÁ¸ÀûÀÌ´Ù(ÇöÀç 4096)

¼öÇà½Ã ÇÁ·Î¼¼½º´ç °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®ÀÇ Æ¯º°ÇÑ Á¦ÇÑÀº ¾ø´Ù. (SHMSEG)  

¹ö±×

IPC_PRIVATE ¸¦ »ç¿ëÇϸé ÇÒ´çµÈ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®¸¦ Á¢±ÙÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀ» ÀúÁöÇÏÁö ¾Ê´Â´Ù.

ÆÄÀÏµé ¶§¹®¿¡, ÇÁ·Î¼¼½º¸¦ À§ÇØ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®¿¡ ´ëÇÑ ¹èŸÀû Á¢±ÙÀ» º¸ÀåÇϱâ À§ÇÑ ¹æ¹ýÀÌ ÇöÀç´Â ¾ø´Ù. shmflg ºñÆ®¿¡ IPC_CREAT ¿Í IPC_EXCL ÀÇ ÁöÁ¤¸¸ÀÌ »õ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ® »ý¼ºÀ» º¸Àå(¼º°ø½Ã)ÇÑ´Ù. ÀÌ°ÍÀº ¼¼±×¸ÕÆ®¿¡ ´ëÇÑ ¹èŸÀû Á¢±ÙÀ» ³ªÅ¸³»´Â °ÍÀº ¾Æ´Ï´Ù.  

ȣȯ

SVr4, SVID. SVr4 ¹®¼­´Â EEXIST ¿¡·¯ Á¶°ÇÀ» Ãß°¡ÀûÀ¸·Î ±â¼úÇß´Ù. SVr4 ¿Í SVID ¹®¼­µéÀº EIDRM Á¶°ÇÀ» ±â¼úÇÏÁö ¾Ê¾Ò´Ù.  

°ü·Ã Ç׸ñ

ftok(3), ipc(5), shmctl(2), shmat(2), shmdt(2)  

¹ø¿ª

Á¤°­ÈÆ <skyeyes@soback.kornet.net> 2000³â 5¿ù 16ÀÏ
ÇÑ±Û Manpage ÇÁ·ÎÁ§Æ® (http://man.kldp.org) 2005³â 2¿ù 13ÀÏ


 

Index

À̸§
»ç¿ë¹ý
¼³¸í
SYSTEM CALLS
¹Ýȯ°ª
¿¡·¯
ÁÖÀÇ
¹ö±×
ȣȯ
°ü·Ã Ç׸ñ
¹ø¿ª

This document was created by man2html, using the manual pages.
Time: 06:54:53 GMT, February 13, 2005