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