semctl

SEMCTL(2)                  Linux Programmer's Manual                 SEMCTL(2)



ì´ë¦
       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)

ì¤ëª
       semctl í¨ìë semid ê° ê°ë¦¬í¤ë ì¸ë§í¬ì´ ì§í©, í¹ì ì´ ì§í©ì semnum ë²ì§¸
       ì¸ë§í¬ì´(ì¸ë§í¬ì´ë 0 ë²ë¶í° ììíë¤.)ì cmd ê° ì§ì íë ì ì´ìì©ì ì¤ííë¤.


       cmd ê° ê°ë ê°ì ë¤ìê³¼ ê°ë¤.

       IPC_STAT    arg.buf í¬ì¸í°ê° ê°ë¦¬í¤ë 구조체ì ì¸ë§í¬ì´ ì§í©ì ë°ì´í
                   구조 ì 보를 ë³µì¬íë¤.  semnum ì¸ìë 무ìëë¤.  í¸ì¶í
                   íë¡ì¸ì¤ë ì¸ë§í¬ì´ ì¤ì ì ì½ê¸°ê¶íì´ ìì´ì¼íë¤.


       IPC_RMID    ì¸ë§í¬ì´ ì§í©ê³¼ ë°ì´í 구조를 ì¦ì ì ê±°íê³ , 모ë
                   ë기ì¤ì¸ íë¡ì¸ì¤ë¤ì ì¬ì¤ííë¤.  í¸ì¶í íë¡ì¸ì¤ì ì í¨ ì¬ì©ìIDë
                   ìí¼ì ì ë ì¸ë§í¬ì´ ì§í©ì ìì±ì í¹ì ìì ìì¤ì íëì¬ì¼ íë¤.  ì¸ì
                   semnum ë 무ìëë¤.

       GETALL      ì§í©ì ëª¨ë  ì¸ë§í¬ì´ì ëí semval ê°ì arg.array.  ì ì ì¥íë¤.
                   ë³ì semnum ë 무ìëë¤. í¸ì¶í íë¡ì¸ì¤ë ì¸ë§í¬ì´ì¤ì ì ì½ê¸°
                   ê¶íì´ ìì´ì¼íë¤.

       GETNCNT     semnum ë²ì§¸ ì¸ë§í¬ì´ì semncnt ê°ì ë°ííë¤. ì´ ê°ì ì¸ë§í¬ì´ì
                   semval ê°ì´ ì¦ê°í기를 기ë¤ë¦¬ê³  ìë íë¡ì¸ì¤ì ì를
                   ëíë¸ë¤. í¸ì¶í íë¡ì¸ì¤ë ì¸ë§í¬ì´ ì¤ì ì ì½ê¸° ê¶íì´ ìì´ì¼íë¤.

       GETPID      ì¸ë§í¬ì´ í¸ì¶ì sempid ì ê°ì ë°ííë¤. ì´ ê°ì ê°ì¥ ìµê·¼ì í´ë¹
                   ì¸ë§í¬ì´ì semop í¸ì¶ì íë íë¡ì¸ì¤ì pid를 ëíë¸ë¤.  í¸ì¶í
                   íë¡ì¸ì¤ë ì¸ë§í¬ì´ ì¤ì ì ì½ê¸° ê¶íì´ ìì´ì¼íë¤.

       GETVAL      ì§í©ì semnum ë²ì§¸ ì¸ë§í¬ì´ì ëí semval ì ê°ì ë°ííë¤. í¸ì¶
                   íë¡ì¸ì¤ë ì¸ë§í¬ì´ ì¤ì ì ëí ì½ê¸° ì ê·¼ì ìì´ í¹ë³í ê¶íì
                   ê°ê³  ìì´ì¼ íë¤.

       GETZCNT     ìì¤í í¸ì¶ì ì§í©ì semnum ë²ì§¸ ì¸ë§í¬ì´ì ëí semzcnt ì ê°ì
                   ë°ííë¤.ì´ ê°ì ì¸ë§í¬ì´ì semval ê°ì´ 0ì´ ë기를 기ë¤ë¦¬ê³
                   ìë íë¡ì¸ì¤ì ì를 ëíë¸ë¤.  í¸ì¶ íë¡ì¸ì¤ë ì¸ë§í¬ì´ ì¤ì ì ëí
                   ì½ê¸° ì ê·¼ ê¶íë¤ì ê°ê³  ìì´ì¼ íë¤.

       SETALL      arg.array ì¸ì ë°°ì´ì ì¬ì©íì¬ ì§í©ì ëª¨ë  ì¸ë§í¬ì´ì semval
                   ê°ì ì¤ì íë¤.  ì§í©ê³¼ ê´ë ¨ë semid_ds 구조체ì sem_ctime
                   멤ë²ë¥¼ ëí ìë°ì´í¸íë¤.  ëª¨ë  íë¡ì¸ì¤ìì ë³ê²½ë ì¸ë§í¬ì´ì
                   ëí´ Undo ìí¸ë¦¬ë¤ì ìê±°ëë¤.  ë기ì´ìì ì í´ì¤ì¸ íë¡ì¸ì¤ë¤ì
                   ì¼ë¶ semval ì´ 0ì´ ëê±°ë, ì¦ê°íë©´, ë¤ì íì±íëë¤.  ì¸ì
                   semnum ì 무ìëë¤. í¸ì¶ íë¡ì¸ì¤ë ì¸ë§í¬ì´ ì¤ì ì ëí ë³ê²½
                   ì ê·¼ ê¶íì ê°ê³  ìì´ì¼ íë¤.

       SETVAL      arg.val ê°ì ì¬ì©íì¬ ì§í©ì semnum ë²ì§¸ ì¸ë§í¬ì´ì semval ê°ì
                   ì¤ì íë¤.  semid_ds 구조ì sem_ctime 멤ë²ë¥¼ ëí
                   ìë°ì´í¸ìí¨ë¤.  ëª¨ë  íë¡ì¸ì¤ìì ë³ê²½ë ì¸ë§í¬ì´ì ëí´ Undo
                   ìí¸ë¦¬ë¤ì ìê±°ëë¤.  ë기ì´ìì ì í´ì¤ì¸ íë¡ì¸ì¤ë¤ì semval ì´
                   0ì´ ëê±°ë, ì¦ê°íë©´, ë¤ì íì±íëë¤.  ì¸ì semnum ì 무ìëë¤.
                   í¸ì¶ íë¡ì¸ì¤ë ì¸ë§í¬ì´ ì¤ì ì ëí ë³ê²½ ì ê·¼ ê¶íì ê°ê³
                   ìì´ì¼ íë¤.

ë°íê°
       ì¤í¨íë©´, ìì¤í í¸ì¶ì ìë¬ë¥¼ ê°ë¦¬í¤ë errno ì í¨ê» -1 를 리í´íë¤.
       ê·¸ë ì§ ìì¼ë©´, ìì¤í í¸ì¶ì ìëì ê°ì´ cmd ì ë°ë¼ ììê°ì´ ìë ê°ì 리í´íë¤.

       GETNCNT    semncnt ì ê° .

       GETPID     sempid ì ê° .

       GETVAL     semval ì ê°.

       GETZCNT    semzcnt ì ê° .

ìë¬
       ì¤í¨ 리í´ì ëíì¬, errno ë ë¤ìì ê°ë¤ì¤ íëë¡ ì¤ì ë  ê²ì´ë¤.:

       EACCES     í¸ì¶ íë¡ì¸ì¤ë cmd 를 ì¤ííëë° íìí ì ê·¼ ê¶íì ê°ê³  ìì§ ìëë¤.

       EFAULT     arg.buf ì ìí´ ê°ë¦¬í¤ë 주ìë arg.array ë ì ê·¼ì´ ë¶ê°ë¥íë¤.

       EIDRM      ì¸ë§í¬ì´ ì¤ì ì ìì ëìë¤.

       EINVAL     cmd ëë semid ì ëí ë¶ì ì í ê°.

       EPERM      ì¸ì cmd ê° IPC_SET ëë IPC_RMID ê°ì ê°ì§ë§, í¸ì¶ íë¡ì¸ì¤ ì í¨
                  ì¬ì©ì IDë ëªë ¹ì ì¤íìí¬ ì ìë 충ë¶ì¹ ìì í¹ê¶ë¤ì ê°ëë¤.

       ERANGE     ì¸ì cmd ë SETALL ëë SETVAL를 ê°ê³ , and the value to which
                  semval ê° 0ë³´ë¤ ì ê³  구í ê°ë³´ë¤ ë í¬ê² ì¤ì ëì´ì¼ íë ê°ì
                  ê°ëë¤.  SEMVMX.

주ì
       IPC_INFO, SEM_STAT ê·¸ë¦¬ê³  SEM_INFO ì ì´ í¸ì¶ë¤ì í ë¹ë ììë¤ì ì 보를
       ì ê³µíë ipcs(8) íë¡ê·¸ë¨ì ìí´ ì¬ì©ëë¤.

       ì¸ë§í¬ì´ ì¤ì ì ëí ë¤ìì ìì¤í ì íì semctl í¸ì¶ì ìí¥ì 미ì¹ë¤.

       SEMVMX     semval ì ëí ìµëê°ì 구íì ìì¡´ì ì´ë¤ (32767).

í¸í
       SVr4, SVID.  SVr4ë ìë¬ ì¡°ê±´  EINVALê³¼ EOVERFLOWì ëí 문ì를 ìì±íë¤.

ê´ë ¨ í목
       ipc(5), shmget(2), shmat(2), shmdt(2)

ë²ì
       ASPLINUX<man@asp-linux.co.kr> 2000ë 7ì 29ì¼
       ë°°ì±í <plodder@kldp.org> 2000ë 11ì 18ì¼
       íê¸ Manpage íë¡ì í¸ (http://man.kldp.org) 2005ë 2ì 14ì¼



Linux 0.99.13                  November 1, 1993                      SEMCTL(2)