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