SEMCTL

Section: Linux Programmer's Manual (2)
Updated: November 1, 1993
Index HOME
 

À̸§

semctl - ½Ã±×³Î Á¦¾î±â.  

»ç¿ë¹ý

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>

#if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
/* union semun is defined by including <sys/sem.h> */
#else
/* according to X/OPEN we have to define it ourselves */
union semun {
        int val;                    /* SETVALÀ» À§ÇѰª */
        struct semid_ds *buf;       /* IPC_STAT, IPC_SETÀ» À§ÇÑ ¹öÆÛ */
        unsigned short int *array;  /* GETALL, SETALLÀ» À§ÇÑ ¹è¿­ */
        struct seminfo *__buf;      /* IPC_INFOÀ» À§ÇÑ ¹öÆÛ */
};
#endif

int semctl (int semid, int semnum, int cmd, union semun arg)  

¼³¸í

±â´ÉÀº ½Ã±×³Î ¼¼Æ®¿¡ cmd ¿¡ ÀÇÇØ ÁöÁ¤µÈ Á¦¾îÀÛ¿ëÀ» ½ÇÇàÇÑ´Ù. ¼¼Æ®ÀÇ Ã¹ ½Ã±×³ÎÀº semnum À» À§ÇÑ °ª 0 ¿¡ ÀÇÇØ Áö½ÃµÈ´Ù.

cmd À» À§ÇÑ °ªÀº ´ÙÀ½°ú °°´Ù.

IPC_STAT
½Ã±×³Î·ÎºÎÅÍ º¹»ç Á¤º¸´Â arg.buf ¿¡ ÀÇÇØ ÁöÁ¤µÇ´Â ±¸Á¶¿¡ µ¥ÀÌŸ ±¸Á¶¸¦ ¼³Á¤ÇÑ´Ù. Àμö semnum ´Â ¹«½ÃµÈ´Ù. È£ÃâÇÑ ÇÁ·Î¼¼½º´Â ½Ã±×³Î ¼³Á¤¿¡ Àбâ±ÇÇÑÀÌ ÀÖ¾î¾ßÇÑ´Ù.
IPC_RMID
½Ã±×³Î ¼³Á¤À» Áï½Ã Á¦°ÅÇϰí, ±×°ÍÀÇ µ¥ÀÌŸ ±¸Á¶´Â ¸ðµç ´ë±âÁßÀÎ ÇÁ·Î¼¼½ºµéÀ» Àç½ÇÇàÇÑ´Ù. È£ÃâÇÑ ÇÁ·Î¼¼½º À¯È¿ »ç¿ëÀÚID´Â ¼öÆÛÀ¯Àú³ª ½Ã±×³Î¼³Á¤ÀÇ »ý¼º, ¼ÒÀ¯ÀÚÁßÀÇ ÇϳªÀ̾î¾ßÇÑ´Ù. Àμö semnum ´Â ¹«½ÃµÈ´Ù.
GETALL
arg.array. Àμö¿¡ ¼³Á¤µÈ ¸ðµç ½Ã±×³Î À§ÇÑ semval ¸¦ ¹ÝȯÇÑ´Ù. º¯¼ö The argument semnum ´Â ¹«½ÃµÈ´Ù. È£ÃâÇÑ ÇÁ·Î¼¼½º´Â ½Ã±×³Î¼³Á¤¿¡ Àб⠱ÇÇÑÀÌ ÀÖ¾î¾ßÇÑ´Ù.
GETNCNT
½Ã½ºÅÛ È£ÃâÀº semncnt ÀÇ °ªÀ» ¹ÝȯÇÑ´Ù. È£ÃâÇÑ ÇÁ·Î¼¼½º´Â ½Ã±×³Î ¼³Á¤¿¡ Àб⠱ÇÇÑÀÌ ÀÖ¾î¾ßÇÑ´Ù.
GETPID
½Ã±×³Î È£ÃâÀº sempid ÀÇ °ªÀ» ¹ÝȯÇÑ´Ù. È£ÃâÇÑ ÇÁ·Î¼¼½º´Â ½Ã±×³Î ¼³Á¤¿¡ Àб⠱ÇÇÑÀÌ ÀÖ¾î¾ßÇÑ´Ù.
GETVAL
½Ã½ºÅÛ È£ÃâÀº ¼³Á¤ÀÇ .IR semnum -th ¼¼¸¶Æ÷¾î¿¡ ´ëÇÑ semval ÀÇ °ªÀ» ¸®ÅÏÇÑ´Ù. È£Ãâ ÇÁ·Î¼¼½º´Â ¼¼¸¶Æ÷¾î ¼³Á¤¿¡ ´ëÇÑ Àбâ Á¢±Ù¿¡ ÀÖ¾î Æ¯º°ÇÑ ±ÇÇÑÀ» °®°í ÀÖ¾î¾ß ÇÑ´Ù.
GETZCNT
½Ã½ºÅÛ È£ÃâÀº ¼³Á¤ÀÇ .IR semnum -th ¼¼¸¶Æ÷¾î¿¡ ´ëÇÑ semzcntÀÇ °ªÀ» ¸®ÅÏÇÑ´Ù. È£Ãâ ÇÁ·Î¼¼½º´Â ¼¼¸¶Æ÷¾î ¼³Á¤¿¡ ´ëÇÑ Àбâ Á¢±Ù ±ÇÇѵéÀ» °®°í ÀÖ¾î¾ß ÇÑ´Ù.
SETALL
Àμö¹è¿­À»»ç¿ëÇϰí,¼³Á¤°ú°ü·ÃµÈ.Bsemid_ds±¸Á¶ÀÇ.Bsem_ctime¸â¹ö¸¦¶ÇÇѾ÷µ¥ÀÌÆ®½ÃÅ´À¸·Î¼­
 ¼³Á¤ÀÇ ¸ðµç ¼¼¸¶Æ÷¾î¿¡ ´ëÇÑ .B semvalÀ» ¼³Á¤ÇÑ´Ù..  ¸ðµç ÇÁ·Î¼¼½º¿¡¼­ º¯°æµÈ ¼¼¸¶Æ÷¾î¿¡ ´ëÇØ Undo ¿£Æ®¸®µéÀº ¼Ò°ÅµÈ´Ù. ´ë±â¿­¿¡¼­ À¯ÈÞÁßÀÎ ÇÁ·Î¼¼½ºµéÀº ÀϺΠ.B semvalÀÌ 0ÀÌ µÇ°Å³ª, Áõ°¡Çϸé, ´Ù½Ã Ȱ¼ºÈ­µÈ´Ù. Àμö .I semnumÀº ¹«½ÃµÈ´Ù. È£Ãâ ÇÁ·Î¼¼½º´Â ¼¼¸¶Æ÷¾î ¼³Á¤¿¡ ´ëÇÑ º¯°æ Á¢±Ù ±ÇÇÑÀ» °®°í ÀÖ¾î¾ß ÇÑ´Ù.
SETVAL
¼³Á¤°ú °ü·ÃµÈ .B semid_ds ±¸Á¶ÀÇ .B sem_ctime ¸â¹ö¸¦ ¶ÇÇÑ ¾÷µ¥ÀÌÆ®½ÃÅ´À¸·Î¼­,
 semvalÀÇ °ªÀ» ¼³Á¤ÀÇ .IR semnum -th ¼¼¸¶Æ÷¾î¿¡ ´ëÇÑ .IB arg .val·Î ¼³Á¤ÇÑ´Ù.  ¸ðµç ÇÁ·Î¼¼½º¿¡¼­ º¯°æµÈ ¼¼¸¶Æ÷¾î¿¡ ´ëÇØ Undo ¿£Æ®¸®µéÀº ¼Ò°ÅµÈ´Ù. ´ë±â¿­¿¡¼­ À¯ÈÞÁßÀÎ ÇÁ·Î¼¼½ºµéÀº ÀϺΠ.B semvalÀÌ 0ÀÌ µÇ°Å³ª, Áõ°¡Çϸé, ´Ù½Ã Ȱ¼ºÈ­µÈ´Ù. Àμö .I semnumÀº ¹«½ÃµÈ´Ù. È£Ãâ ÇÁ·Î¼¼½º´Â ¼¼¸¶Æ÷¾î ¼³Á¤¿¡ ´ëÇÑ º¯°æ Á¢±Ù ±ÇÇÑÀ» °®°í ÀÖ¾î¾ß ÇÑ´Ù.
 

¹Ýȯ°ª

½ÇÆÐÇϸé, ½Ã½ºÅÛ È£ÃâÀº ¿¡·¯¸¦ °¡¸®Å°´Â .B errno¿Í ÇÔ²² .B -1¸¦ ¸®ÅÏÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ½Ã½ºÅÛ È£ÃâÀº ¾Æ·¡¿Í °°ÀÌ .I cmd¿¡ µû¶ó À½¼ö°ªÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù.
GETNCNT
semncntÀǰª.
GETPID
sempidÀǰª.
GETVAL
semvalÀǰª.
GETZCNT
semzcntÀǰª.
 

¿¡·¯

½ÇÆÐ ¸®ÅÏ¿¡ ´ëÇÏ¿©, errno ´Â ´ÙÀ½ÀÇ °ªµéÁß Çϳª·Î ¼³Á¤µÉ °ÍÀÌ´Ù.:
EACCES
È£Ãâ ÇÁ·Î¼¼½º´Â .IR cmd¸¦ ½ÇÇàÇϴµ¥ ÇÊ¿äÇÑ Á¢±Ù ±ÇÇÑÀ» °®°í ÀÖÁö ¾Ê´Â´Ù.
EFAULT
arg.buf¿¡ÀÇÇØ°¡¸®Å°´ÂÁÖ¼Ò³ª.IBarg.array´ÂÁ¢±ÙÀ̺Ұ¡´ÉÇÏ´Ù.
EIDRM
¼¼¸¶Æ÷¾î ¼³Á¤Àº »èÁ¦µÇ¾ú´Ù.
EINVAL
cmd ¶Ç´Â semid¿¡´ëÇѺÎÀûÀýÇѰª.
EPERM
Àμö .I cmd has value IPC_SET ¶Ç´Â IPC_RMID °ªÀ» °®Áö¸¸, È£Ãâ ÇÁ·Î¼¼½º À¯È¿ »ç¿ëÀÚ ID´Â ¸í·ÉÀ» ½ÇÇà½Ãų ¼ö ÀÖ´Â ÃæºÐÄ¡ ¾ÊÀº Ư±ÇµéÀ» °®´Â´Ù.
ERANGE
Àμö cmd ´Â SETALL ¶Ç´Â SETVAL¸¦ °®°í, and the value to which semval°¡ 0º¸´Ù Àû°í ±¸Çö °ªº¸´Ù ´õ Å©°Ô ¼³Á¤µÇ¾î¾ß ÇÏ´Â °ªÀ» °®´Â´Ù. SEMVMX.
 

ÁÖÀÇ

IPC_INFO, SEM_STAT ±×¸®°í SEM_INFO Á¦¾î È£ÃâµéÀº ÇÒ´çµÈ ÀÚ¿øµé¿¡ Á¤º¸¸¦ Á¦°øÇÏ´Â .BR ipcs (8) ÇÁ·Î±×·¥¿¡ ÀÇÇØ »ç¿ëµÈ´Ù.

¼¼¸¶Æ÷¾î ¼³Á¤¿¡ ´ëÇÑ ´ÙÀ½ÀÇ ½Ã½ºÅÛ Á¦ÇÑÀº .B semctl È£Ãâ¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù.

SEMVMX
Maximum value for semval¿¡´ëÇÑÃÖ´ë°ªÀº±¸Çö¿¡ÀÇÁ¸ÀûÀÌ´Ù(32767).
 

ȣȯ

SVr4, SVID. SVr4´Â ¿¡·¯ Á¶°Ç EINVAL°ú EOVERFLOW¿¡ ´ëÇÑ ¹®¼­¸¦ ÀÛ¼ºÇÑ´Ù.  

°ü·Ã Ç׸ñ

ipc(5), shmget(2), shmat(2), shmdt(2)  

¿ªÀÚ

ASPLINUX<man@asp-linux.co.kr>, 2000³â 7¿ù 29ÀÏ


 

Index

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