SEMOP
Section: Linux Programmer's Manual (2)
Updated: November 1, 1993
Index
Return to Main Contents
 
À̸§
semop - ¼¼¸¶Æ÷¾î Á¶ÀÛ.
 
»ç¿ë¹ý
# include <sys/types.h>
# include <sys/ipc.h>
# include <sys/sem.h>
int semop ( int semid,
struct sembuf *sops,
unsigned nsops )
 
¼³¸í
 ÀÌ ÇÔ¼ö´Â 
semid
°¡ Áö½ÃÇÏ´Â ¼¼¸¶Æ÷¾î ÁýÇÕ Áß ¼±ÅÃµÈ ¸â¹öµé¿¡ ´ëÇÏ¿© ¿¬»êÀ» ¼öÇàÇÑ´Ù. 
sops
°¡ °¡¸®Å°´Â 
nsops
°³ÀÇ ¿ø¼Ò¸¦ °®´Â ¹è¿ÀÇ °¢ ¿ø¼Ò´Â ´ÙÀ½°ú °°Àº 
struct sembuf
À̸ç, ¼¼¸¶Æ÷¾î¿¡ ¼öÇàµÉ ¿¬»êÀ» ÁöÁ¤ÇÑ´Ù.
 short sem_num;
/* semaphore number: 0 = first */
 short sem_op;
/* semaphore operation */
 short sem_flg;
/* operation flags */
sem_flg
Ç÷¡±×´Â
IPC_NOWAIT
ȤÀº
SEM_UNDO
ÀÌ´Ù.
¸¸ÀÏ Ç÷¡±×°¡
SEM_UNDO
·Î ÁöÁ¤µÇ¾î ÀÖÀ¸¸é,
ÇÁ·Î¼¼½º°¡ Á¾·áÇÒ ¶§ ¼¼¸¶Æ÷¾î¸¦ ¿ø·¡´ë·Î µÇµ¹·Á ³õÀ» °ÍÀÌ´Ù.
½Ã½ºÅÛ È£Ãâ ½Ã¸ÇÆ½Àº ¿ÀÁ÷ ¸ðµç ÇÁ·Î¼¼½º°¡ ¼º°øÇÒ ¶§¸¸ ¿¬»êµéÀÌ ¼öÇàµÉ °ÍÀ» º¸ÀåÇÑ´Ù.
¼¼Æ® Áß Ã¹¹øÂ° ¼¼¸¶Æ÷¾î°¡ 0ÀÎ °÷¿¡¼
¿¬»êµéÀÌ ¼öÇàµÉ °ÍÀÌ°í ´ÙÀ½ÀÇ ¼¼°¡Áö Áß ÇϳªÀÌ´Ù ¶ó´Â °ÍÀ» º¸ÁõÇÑ´Ù.
Each operation is performed on the
°¢ ¿¬»êÀº ¼¼¸¶Æ÷¾î ¼¼Æ®ÀÇ 
sem_num-th
¼¼¸¶Æ÷¾î»ó(¼¼Æ® Áß Ã¹¹øÂ° ¼¼¸¶Æ÷¾î°¡ 0ÀÎ °÷¿¡¼)¿¡¼ ¼öÇàµÇ°í,
´ÙÀ½ÀÇ ¼¼°¡Áö Áß ÇϳªÀÌ´Ù.
¸¸ÀÏ
sem_op
°¡ ¾ç¼ö¶ó¸é, ¿¬»êÀº ÀÌ °ªÀ» 
semval
À¸·Î Ãß°¡½ÃŲ´Ù.
´õ¿íÀÌ,
¸¸ÀÏ
SEM_UNDO
°¡ ÀÌ ¿¬»ê¿¡ ´ëÇØ ÁÖÀåµÈ´Ù¸é, ½Ã½ºÅÛÀº  ÀÌ ¼¼¸¶Æ÷¾î¿¡ ´ëÇÑ
ÇÁ·Î¼¼½º undo Ä«¿îÆ®¸¦ ¾÷µ¥ÀÌÆ®ÇÑ´Ù.
¿¬»êÀº °è¼ÓÀûÀ¸·Î ½ÇÇàµÇ°í, µû¶ó¼ À¯ÈÞÇÏ´Â ÇÁ·Î¼¼½º´Â ¹ß»ýÇÏÁö ¾Ê´Â´Ù.
È£Ãâ ÇÁ·Î¼¼½º´Â ¼¼¸¶Æ÷¾î ¼¼Æ®¿¡ ´ëÇØ º¯°æ ±ÇÇѵéÀ» °®°í ÀÖ¾î¾ß ÇÑ´Ù.
¸¸ÀÏ
sem_op
ÀÌ zeroÀ̸é, ÇÁ·Î¼¼½º´Â ¼¼¸¶Æ÷¾î ¼¼Æ®¿¡ ´ëÇÑ Àбâ Á¢±Ù ±ÇÇѵéÀ» °®°í ÀÖ¾î¾ß ÇÑ´Ù.
¸¸ÀÏ
semval
ÀÌ Á¦·Î¶ó¸é, ¿¬»êÀº ½ÇÇàµÈ´Ù.
±×·¸Áö ¾ÊÀ¸¸é, ¸¸ÀÏ
IPC_NOWAIT
ÀÌ
sem_flg
³»¿¡¼ ÁÖÀåµÇ¸é,
EAGAIN
À¸·Î ¼³Á¤µÈ 
errno
¿¡ ÀÇÇØ ½ÇÆÐÇÑ´Ù.
±×·¸Áö ¾ÊÀ¸¸é,
semzcnt
Àº Çϳª¾¿ Áõ°¡Çϰí, ÇÁ·Î¼¼½º´Â ´ÙÀ½Áß Çϳª°¡ ÀϾ±â Àü±îÁö À¯ÈÞ¿¡ µç´Ù.
- 
- 
- *
- 
semval
˼ 
semzcnt
ÀÇ °ªÀÌ °¨¼ÒÇÏ´Â ¶§¿¡ 0ÀÌ µÈ´Ù.
- *
- 
¼¼¸¶Æ÷¾î ¼¼Æ®´Â »èÁ¦µÈ´Ù. ½Ã½ºÅÛ È£ÃâÀº 
EIDRM
À¸·Î ¼³Á¤µÈ  
errno
¿¡ ÀÇÇØ ½ÇÆÐÇÑ´Ù.
- *
- 
È£Ãâ ÇÁ·Î¼¼½º´Â °¨ÁöµÇ¾î¾ß ÇÏ´Â ¼¼¸¶Æ÷¾îÀ» ¼ö½ÅÇÑ´Ù.
semzcnt
 °ªÀº °¨¼ÒµÇ°í, ½Ã½ºÅ۠ȣÃâÀº 
EINTR
·Î ¼³Á¤µÈ 
errno
¿¡ ÀÇÇØ ½ÇÆÐÇÑ´Ù.
 
 
¸¸ÀÏ
sem_op
ÀÌ 0º¸´Ù ³·´Ù¸é, ÇÁ·Î¼¼½º´Â ¼¼¸¶Æ÷¾î ¼¼Æ®¿¡ ´ëÇÑ º¯°æ ±ÇÇѵéÀ» °®°í ÀÖ¾î¾ß ÇÑ´Ù.
¸¸ÀÏ
semval
ÀÌ 
sem_op
ÀÇ Àý´ë°ªº¸´Ù ³ô°Å³ª µ¿ÀÏÇÏ´Ù¸é,
sem_op
ÀÇ Àý´ë°ªÀº 
semval
¿¡ ÀÇÇØ °¨¼ÒµÈ´Ù .
´õ¿ì±â, ¸¸ÀÏ
SEM_UNDO
ÀÌ ÀÌ ¿¬»ê¿¡ ´ëÇØ ´Ü¾ðµÈ´Ù¸é, ½Ã½ºÅÛÀº ÀÌ ¼¼¸¶Æ÷¾î¿¡ ´ëÇÑ
ÇÁ·Î¼¼½º undo Ä«¿îÆ®¸¦ ¾÷µ¥ÀÌÆ®ÇÑ´Ù.
±×¸®°í³ª¼, ¿¬»êÀº °è¼ÓµÈ´Ù.
±×·¸Áö ¾Ê°í, ¸¸ÀÏ
Otherwise, if
IPC_NOWAIT
ÀÌ 
sem_flg
³»¿¡¼ ´Ü¾ðµÈ´Ù¸é,
½Ã½ºÅÛ È£ÃâÀº
EAGAIN
·Î ¼³Á¤µÈ 
errno
¿¡ ÀÇÇØ ½ÇÆÐÇÑ´Ù.(¼öÇàµÈ ÀÌÀüÀÇ ¾×¼ÇµéÀ»
Ãë¼ÒÇÔÀ¸·Î¼)
±×·¸Áö ¾ÊÀ¸¸é,
Otherwise
semncnt
´Â Çϳª¿¡ ÀÇÇØ Áõ°¡µÇ°í, ÇÁ·Î¼¼½º´Â ´ÙÀ½ Áß Çϳª°¡ ¹ß»ýÇϱâ Àü±îÁö À¯ÈÞÇÑ´Ù.
- 
- 
- *
- 
semval
´Â 
sem_op
ÀÇ Àý´ë°ªº¸´Ù µ¿ÀÏÇϰųª ´õ ³ô¾ÆÁø´Ù.
semncnt
 °ªÀÌ °¨¼ÒµÉ¶§, .B sem_opÀÇ Àý´ë°ªÀº 
semval¿¡¼ °¨ÇØÁø´Ù.
±×¸®°í
SEM_UNDO
ÀÌ ÀÌ ¿¬»ê¿¡ ´ëÇØ  ÁÖÀåµÇ¸é, ½Ã½ºÅÛÀº  ¼¼¸¶Æ÷¾î¿¡ ´ëÇÑ
ÇÁ·Î¼¼½º undo Ä«¿îÆ®¸¦ ¾÷µ¥ÀÌÆ®ÇÑ´Ù.
- *
- 
¼¼¸¶Æ÷¾î ¼¼Æ®´Â ½Ã½ºÅÛ¿¡¼ »èÁ¦µÈ´Ù. ½Ã½ºÅÛ È£ÃâÀº 
EIDRM
À¸·Î ¼³Á¤µÈ  
errno¿¡ ÀÇÇØ
½ÇÆÐÇÑ´Ù.
- *
- 
È£Ãâ ÇÁ·Î¼¼½º´Â °¨ÁöµÇ¾î¾ß ÇÑ´Â ¼¼¸¶Æ÷¾îÀ» ¼ö½ÅÇÑ´Ù. 
semncnt
ÀÇ °ªÀº °¨¼ÒµÇ°í,
½Ã½ºÅÛ È£ÃâÀº 
EINTR
À¸·Î ¼³Á¤µÈ  
errno
¿¡ ÀÇÇØ ½ÇÆÐÇÑ´Ù.
 
 
In case of success, the
¼º°øÇÒ °æ¿ì, 
sops
¿¡ ÀÇÇØ Áö½ÃµÈ ¹è¿³»¿¡ ¸í½ÃµÈ °³º° ¼¼¸¶Æ÷¾î¿¡ ´ëÇÑ ±¸Á¶ 
sem
ÀÇ
sempid ¸â¹ö´Â È£Ãâ ÇÁ·Î¼¼½ºÀÇ process-ID ·Î ¼³Á¤µÈ´Ù.
´õ¿íÀÌ, 
sem_otime
¿Í 
sem_ctime
¸ðµÎ ÇöÀç ½Ã°£À¸·Î ¼³Á¤µÈ´Ù.
 
¹Ýȯ°ª
½Ã½ºÅÛ È£ÃâÀÌ ¼º°øÀûÀ̸é
0
À» ¹ÝȯÇϰí
±×·¸Áö ¾ÊÀ¸¸é, ¿¡·¯¸¦ °¡¸®Å°´Â 
errno
¿Í 
-1
À» ¹ÝȯÇÑ´Ù.
 
¿¡·¯
½ÇÆÐÇßÀ» ¶§, 
errno
´Â ´ÙÀ½ Áß Çϳª¸¦ °®´Â´Ù.
- E2BIG
- 
Àμö 
nsops
´Â ½Ã½ºÅÛ È£Ãâ ÇÑ °³¿¡ Çã¿ëµÈ ¿¬»êÀÇ °¹¼öÀÎ
SEMOPM
¸¦ ³Ñ´Â´Ù.
- EACCES
- 
ÇÁ·Î¼¼½º°¡ È£ÃâÇÑ ¿¬»êµéÀÌ ¿ä±¸ÇÏ´Â ¼¼¸¶Æ÷¾î ÁýÇÕ¿¡ ´ëÇÑ
Á¢±Ù ±ÇÇÑÀ» °®°í ÀÖÁö ¾Ê´Ù.
- EAGAIN
- 
sem_flg
°¡ 
IPC_NOWAIT
À̾ú°í, ¿¬»êÀÌ Áï½Ã ½ÇÇàµÉ ¼ö ¾ø¾ú°Å³ª,
timeout
À¸·Î ÁöÁ¤µÈ ½Ã°£ Á¦ÇÑÀ» ³Ñ¾î¼±îÁö ½ÇÇàµÇÁö ¾Ê¾Ò´Ù.
- EFAULT
- 
sops
ÀÌ ÁöÁ¤ÇÑ ÁÖ¼Ò, ȤÀº
timeout
À» Á¢±ÙÇÒ ¼ö ¾ø´Ù.
- EFBIG
- 
ÀϺΠ¿¬»ê¿¡ ´ëÇÏ¿©, 
sem_num 
°ªÀÌ
0 º¸´Ù À۰ųª, ÀÌ ÁýÇÕÀÇ ¼¼¸¶Æ÷¾î °¹¼ö ÀÌ»óÀÌ´Ù.
- EIDRM
- 
¼¼¸¶Æ÷¾î ÁýÇÕÀÌ »èÁ¦µÇ¾ú´Ù.
- EINTR
- 
´ë±â ¿¿¡¼ À¯ÈÞ½Ã, ÇÁ·Î¼¼½º´Â °¨ÁöµÇ¾î¾ß ÇÏ´Â ¼¼¸¶Æ÷¾îÀ» ¼ö½ÅÇÑ´Ù.
- EINVAL
- 
¼¼¸¶Æ÷¾î ÁýÇÕÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª, 
semid
°¡ 0º¸´Ù ÀÛ´Ù. ¶Ç´Â,
nsops°¡ ¾ç¼ö°¡ ¾Æ´Ï´Ù.
- ENOMEM
- 
sem_flg 
°¡ 
SEM_UNDO
ÀÌÁö¸¸, ½Ã½ºÅÛÀÌ undo ±¸Á¶¸¦ ÇÒ´çÇÒ ¸¸Å ÃæºÐÇÑ
¸Þ¸ð¸®¸¦ °®°í ÀÖÁö ¾Ê´Ù.
- ERANGE
- 
ÀϺΠ¿¬»ê¿¡ ´ëÇÏ¿©,
semop+semval
°¡ ±¸Çö¿¡ µû¶ó ´Ù¸£°Ô Á¤ÇØÁö´Â
semval
ÀÇ ÃÖ´ë°ª
SEMVMX
º¸´Ù ´õ Å©´Ù.
ÁÖÀÇ
ÇÁ·Î¼¼½ºÀÇ 
sem_undo 
±¸Á¶µéÀº 
fork(2)
½Ã½ºÅÛ È£Ãâ½Ã ÀÚ½Ä ÇÁ·Î¼¼½º·Î
»ó¼ÓµÇÁö ¾Ê´Â´Ù.
´ë½Å¿¡ ÀÌ ±¸Á¶µéÀº 
execve(2)
½Ã½ºÅÛ È£ÃâÀÇ ½ÇÇàÀ» ÅëÇÑ ´ëü ÇÁ·Î¼¼½º·Î »ó¼Ó °¡´ÉÇÏ´Ù.
´ÙÀ½µéÀº ¼¼¸¶Æ÷¾î ¼¼Æ®»ó¿¡¼ 
semop 
È£Ãâ¿¡ ¿µÇâÀ» ¹ÌħÀ¸·Î¼ ÀÚ¿ø¿¡ ´ëÇÑ ÇѰèÀÌ´Ù.
- SEMOPM
- 
ÇϳªÀÇ 
semop 
È£Ãâ¿¡ ´ëÇØ Çã¿ëµÈ ¿¬»êµéÀÇ ÃÖ´ë ¼ýÀÚ. Á¤Ã¥ ÀÇÁ¸ÀûÀÌ´Ù.
- SEMVMX
- 
semval
¿¡ ´ëÇØ ÃÖ´ë·Î Çã¿ëµÈ °ª. ±¸Çö ÀÇÁ¸ÀûÀÌ´Ù (32767).
¹ö±×
½Ã½ºÅÛÀº undo ¿äûÀ¸·Î ÇÁ·Î¼¼½º¿¡ ÀÇÇØ º¯°æµÈ °³º° ¼¼¸¶Æ÷¾î¿¡ ´ëÇÑ °³º°
ÇÁ·Î¼¼½º 
sem_undo 
±¸Á¶¸¦ °ü¸®ÇÑ´Ù.
ÀÌ·¯ÇÑ ±¸Á¶µéÀº ÇÁ·Î¼¼½º exit¿¡ ÀÚÀ¯·Ó´Ù.
undo ¸ÞÄ¿´ÏÁò¿¡ ÀÖ¾î À߸øµÈ Á¡ÀÇ ÁÖ¿äÇÑ ¿øÀÎÀº ¿¬»êÀÇ ±Ø¼Ò ¼¼Æ®¸¦
¼¼¸¶Æ÷¸ÓÀÇ ¹è¿·Î ¸¸µå´Â
°ü³ä¿¡ ÀûÇÕÇÏ°Ô ÇѴٴµ¥ ÀÖ´Ù.
¼ö¸¹Àº ¹è¿ ¹× °³º° ¼¼¸¶Æ÷¾î¿¡ ´ëÇÑ undo ¿äûµéÀº 
semopt 
È£Ãâµé À§¿¡ ÃàÀûµÉ ¼ö ÀÖ´Ù.
ºüÁ®³ª°¥¶§, ÇÁ·Î¼¼½º°¡ ÀáÀÚ°í ÀÖ¾î¾ß Çϴ°¡? ¶Ç´Â ¸ðµç undo ¿¬»êµéÀÌ 
IPC_NOWAIT 
Ç÷¡±×¿¡
È¿·ÂÀÌ µÉ ¼ö ÀÖµµ·Ï Àû¿ëµÇ¾î¾ß Çϴ°¡?
Áï½Ã Àû¿ëµÇ¾î¾ß ÇÏ´Â ÇöÀçÀÇ undo ¿¬»êµéÀº ±â´Ù¸²ÀÌ ÇÊ¿äÇÑ ¿¬»êµéÀº ¹«½ÃµÈ´Ù.
µû¶ó¼, ¾ÇÀÇ ¾ø´Â undoÀÇ È°¿ëÀº »çÀûÀÎ ¼¼¸¶Æ÷¾î¿¡ ÀÇÇØ¼¸¸ º¸ÁõµÈ´Ù.
 
ȣȯ
SVr4, SVID.  SVr4´Â EINVAL, EFBIG, ENOSPCÀÇ Ãß°¡ ¿¡·¯ Á¶°Çµé¿¡ ´ëÇÑ ¹®¼¸¦ Á¦°øÇÑ´Ù.
 
°ü·Ã Ç׸ñ
ipc(5),
semctl(2),
semget(2)
 
¹ø¿ª
ASPLINUX <man@asp-linux.co.kr> 2000³â 7¿ù 29ÀÏ
¹è¼ºÈÆ <plodder@kldp.org> 2000³â 11¿ù 18ÀÏ
ÇÑ±Û Manpage ÇÁ·ÎÁ§Æ® (http://man.kldp.org) 2005³â 2¿ù 13ÀÏ
 Index
- À̸§
- 
- »ç¿ë¹ý
- 
- ¼³¸í
- 
- ¹Ýȯ°ª
- 
- ¿¡·¯
- 
- ÁÖÀÇ
- 
- ¹ö±×
- 
- ȣȯ
- 
- °ü·Ã Ç׸ñ
- 
- ¹ø¿ª
- 
This document was created by
man2html,
using the manual pages.
Time: 07:02:10 GMT, February 13, 2005