.\" .\" Copyright (c) 1995 David Hovemeyer .\" .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" %FreeBSD: src/lib/libc/sys/semctl. 2, v 1.9. 2.6 2002/03/11 08:37:47 maxim Exp % .\" .\" $FreeBSD: doc/ja_JP.eucJP/man/man2/semctl. 2, v 1.8 2002/03/18 03:19:52 horikawa Exp $ .Dd September 12, 1995 .Dt SEMCTL 2 .Os .Sh ¸íĪ .Nm semctl .Nd semaphore ÁýÇÕ¿¡ ´ëÇÑ Á¶ÀÛÀ» Á¦¾îÇÑ´Ù .Sh ÇÁ·Î±×·¥ ¶óÀ̺귯¸® .Lb libc .Sh ¼­½Ä .In sys/types.h .In sys/ipc.h .In sys/sem.h .Ft int .Fn semctl "int semid" "int semnum" "int cmd" ... .Sh ÇØ¼³ .Fn semctl (Àº)´Â, .Fa cmd ÇÏÁö¸¸ °¡¸®Å°´Â Á¶ÀÛÀ» .Fa semid ±×¸®°í ³ªÅ¸³ª´Â semaphore ÁýÇÕ¿¡ ´ëÇØ¼­ ½ÇÇàÇÕ´Ï´Ù. ¾î´À °ªÀÇ .Fa cmd ¿¡ ´ëÇØ¼­´Â, 4 ¹øÂ°ÀÇ Àμö .Fa "union semun arg" ÇÏÁö¸¸ ÇÊ¿äÇÕ´Ï´Ù. .Fa arg ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÏ´Â ¸í·ÉÀÇ °æ¿ì, .Fa "union semun" (Àº)´Â ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ. .Bd -literal .\" .\" From : .\" union semun { int val; /* SETVAL ¿ëÀÇ °ª */ struct semid_ds *buf; /* IPC_STAT ¹× IPC_SET ¿ëÀÇ ¹öÆÛ */ u_short *array; /* GETALL ¹× SETALL ¿ëÀÇ ¹è¿­ */ }; .Ed .Pp ¸í·ÉÀº ´ÙÀ½°ú °°ÀÌ ½ÇÇàµË´Ï´Ù. .\" .\" This section based on Stevens, _Advanced Programming in the UNIX .\" Environment_. .\" .Bl -tag -width IPC_RMIDXXX .It Dv IPC_STAT semaphore ÁýÇÕÀÇ .Fa "struct semid_ds" (À»)¸¦ ÃëµæÇØ, .Fa arg.buf ÇÏÁö¸¸ °¡¸®Å°´Â ¸Þ¸ð¸®¿¡ º¸Á¸ÇÕ´Ï´Ù. .It Dv IPC_SET semaphore ÁýÇÕÀÇ .Fa "struct semid_ds" ÀÇ ¸â¹ö .Fa sem_perm.uid , .Fa sem_perm.gid ¹× .Fa sem_perm.mode (À»)¸¦, .Fa arg.buf ÇÏÁö¸¸ °¡¸®Å°´Â ±¸Á¶Ã¼ÀÇ ¸â¹ö¿Í ÀÏÄ¡Çϵµ·Ï(µíÀÌ) º¯°æÇÕ´Ï´Ù. È£Ãâ¿øÇÁ·Î¼¼½ºÀÇ ½ÇÈ¿ À¯Àú ID ´Â, .Fa sem_perm.uid ¶Ç´Â .Fa sem_perm.cuid ÀÇ ¾î´À ÂÊÀϱîÇϰí ÀÏÄ¡ÇÒ Çʿ䰡 ÀÖ´ÂÁö, ¶Ç´Â ½´ÆÛ À¯Àú Ư±ÇÀ» °¡Áö°í ÀÖÀ» Çʿ䰡 ÀÖ½À´Ï´Ù. .It IPC_RMID semaphore ÁýÇÕÀ» Áï½Ã ½Ã½ºÅÛÀ¸·ÎºÎÅÍ »èÁ¦ÇÕ´Ï´Ù. È£Ãâ¿øÇÁ·Î¼¼½ºÀÇ ½ÇÈ¿ À¯Àú ID °¡ semaphore ÁýÇÕÀÇ .Fa sem_perm.uid ¶Ç´Â .Fa sem_perm.cuid (¿Í)°ú µ¿ÀÏÇÑÁö, ¶Ç´Â ÇÁ·Î¼¼½º°¡ ½´ÆÛ À¯Àú Ư±ÇÀ» °¡Áö°í ÀÖÀ» Çʿ䰡 ÀÖ½À´Ï´Ù. .It Dv GETVAL semaphore ¹øÈ£ .Fa semnum ÀÇ °ªÀ» µ¹·ÁÁÝ´Ï´Ù. .It Dv SETVAL semaphore ¹øÈ£ .Fa semnum ÀÇ °ªÀ» .Fa arg.val (À¸)·Î ¼³Á¤ÇÕ´Ï´Ù. .It Dv GETPID semaphore ¹øÈ£ .Fa semnum ¿¡ ºÙ¾î Á¶ÀÛÀ» ½ÇÇàÇÑ ¸¶Áö¸· ÇÁ·Î¼¼½ºÀÇ ÇÁ·Î¼¼½º ID ¸¦ µ¹·ÁÁÝ´Ï´Ù. .It Dv GETNCNT semaphore ¹øÈ£ .Fa semnum ÀÇ °ªÀÌ ÇöÀçÀÇ °ªº¸´Ù Ä¿Áö´Â °ÍÀ» ±â´Ù¸®°í ÀÖ´Â ÇÁ·Î¼¼½ºÀÇ ¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. .It Dv GETZCNT semaphore ¹øÈ£ .Fa semnum ÀÇ °ªÀÌ 0 ÀÌ µÇ´Â °ÍÀ» ±â´Ù¸®°í ÀÖ´Â ÇÁ·Î¼¼½ºÀÇ ¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. .It Dv GETALL ÁýÇÕ³»ÀÇ ¸ðµç semaphoreÀÇ °ªÀ» .Fa arg.array ÇÏÁö¸¸ °¡¸®Å°´Â ¹è¿­³»¿¡ ÃëµæÇÕ´Ï´Ù. .It Dv SETALL ÁýÇÕ³»ÀÇ ¸ðµç semaphoreÀÇ °ªÀ» .Fa arg.array ÇÏÁö¸¸ °¡¸®Å°´Â ¹è¿­³»ÀÇ °ªÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù. .El .Pp .Fa "struct semid_ds" (Àº)´Â ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ. .Bd -literal .\" .\" Taken straight from . .\" struct semid_ds { struct ipc_perm sem_perm; /* Á¶ÀÛ ÆÛ¹Ì¼Ç ±¸Á¶Ã¼ */ struct sem *sem_base; /* ÁýÇÕ³»ÀÇ ÃÖÃÊÀÇ semaphore¿¡ÀÇ Æ÷ÀÎÅÍ */ u_short sem_nsems; /* ÁýÇÕ³»ÀÇ semaphoreÀÇ ¼ö */ time_t sem_otime; /* ¸¶Áö¸· Á¶ÀÛ ½Ã°¢ */ long sem_pad1; /* SVABI/386 ¿¡ ¹ã°ú À̰ÍÀÌ ÇÊ¿ä */ time_t sem_ctime; /* ¸¶Áö¸· º¯°æ ½Ã°¢ * 1970/01/01 00:00:00 GMT * (À¸)·ÎºÎÅÍÀÇ ÃÊ´ÜÀ§ÀÇ °æ°ú½Ã°£ */ long sem_pad2; /* SVABI/386 ¿¡ ¹ã°ú À̰ÍÀÌ ÇÊ¿ä */ long sem_pad3[4]; /* SVABI/386 ¿¡ ¹ã°ú À̰ÍÀÌ ÇÊ¿ä */ }; .Ed .Sh ¹Ýȯ°ª 󸮰¡ Á¤»óÀûÀ¸·Î ¿Ï·áÇϸé(ÀÚ), .Fa cmd ÇÏÁö¸¸ .Dv GETVAL , .Dv GETPID , .Dv GETNCNT , .Dv GETZCNT ÀÇ ¾î¶² °ÍÀΰ¡ÀÏ ¶§, .Fn semctl (Àº)´Â ´ëÀÀÇÏ´Â °ªÀ» µ¹·ÁÁÝ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì´Â 0 À» µ¹·ÁÁÝ´Ï´Ù. 󸮿¡ ½ÇÆÐÇßÀ» °æ¿ì´Â,-1 À» µ¹·ÁÁÖ¾î, ¿¡·¯¸¦ ³ªÅ¸³»±â À§Çؼ­(¶§¹®¿¡) .Va errno (À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù. .Sh ¿¡·¯ .Fn semctl (Àº)´Â ´ÙÀ½ÀÇ °æ¿ì¿¡ 󸮿¡ ½ÇÆÐÇÕ´Ï´Ù. .Bl -tag -width Er .It Bq Er EINVAL .Fa semid ¿¡ ´ëÀÀÇÏ´Â semaphore ÁýÇÕÀÌ ¾ø½À´Ï´Ù. .It Bq Er EINVAL .Fa semnum ÇÏÁö¸¸, ÁöÁ¤ÀÇ semaphore ÁýÇÕ¿¡ ´ëÇØ¼­ À¯È¿ÇÑ semaphoreÀÇ ¹üÀ§³»¿¡ ¾ø½À´Ï´Ù. .It Bq Er EPERM È£Ãâ¿øÇÁ·Î¼¼½ºÀÇ ½ÇÈ¿ À¯Àú ID °¡, semaphore ÁýÇÕÀÇ ¼ÒÀ¯ÀÚ ¶Ç´Â ÀÛ¼ºÀÚÀÇ À¯Àú ID ¿Í ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù. .It Bq Er EACCES Á¶ÀÛ°ú semaphore ÁýÇÕÀÇ ¸ðµåÀÇ »çÀÌ¿¡ ºÒÀÏÄ¡°¡ ÀÖ¾ú±â ¶§¹®¿¡ ÆÛ¹Ì¼ÇÀÌ °ÅºÎµÇ¾ú½À´Ï´Ù. .El .Sh °ü·Ã Ç׸ñ .Xr semget 2 , .Xr semop 2