.\" $NetBSD: msgctl. 2, v 1.1 1995/10/16 23:49:15 jtc Exp $ .\" .\" Copyright (c) 1995 Frank van der Linden .\" 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. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed for the NetBSD Project .\" by Frank van der Linden .\" 4. The name of the author may not be used to endorse or promote products .\" derived from this software without specific prior written permission .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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/gen/msgctl. 3, v 1.8. 2.6 2001/12/14 18:33:51 ru Exp % .\"/ .\" $FreeBSD: doc/ja_JP.eucJP/man/man3/msgctl. 3, v 1.5 2002/11/03 06:38:28 horikawa Exp $ .Dd November 24, 1997 .Dt MSGCTL 3 .Os .Sh ¸íĪ .Nm msgctl .Nd ¸Þ¼¼Áö Á¦¾î ¿ÀÆÛ·¹ÀÌ¼Ç .Sh ÇÁ·Î±×·¥ ¶óÀ̺귯¸® .Lb libc .Sh ¼­½Ä .In sys/types.h .In sys/ipc.h .In sys/msg.h .Ft int .Fn msgctl "int msqid" "int cmd" "struct msqid_ds *buf" .Sh ÇØ¼³ .Fn msgctl ½Ã½ºÅÛ ÄÝÀº, .Fa msqid ÇÏÁö¸¸ ÁöÁ¤ÇÏ´Â ¸Þ½ÃÁö Å¥¿¡ ´ëÇØ¼­ Á¦¾î ¿ÀÆÛ·¹À̼ÇÀ» ½ÇÇàÇÕ´Ï´Ù. .Pp °¢ ¸Þ½ÃÁö Å¥¿¡´Â, °Å±â¿¡ °ü·ÃÇÑ µ¥ÀÌÅÍ ±¸Á¶Ã¼°¡ ÀÖ½À´Ï´Ù. ±× ÀϺδ .Fn msgctl ±×¸®°í º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. .Fn msgctl ÀÇ ¾×¼ÇÀ» °áÁ¤ÇÏ´Â µ¥ÀÌÅÍ ±¸Á¶µµ ÀÖ½À´Ï´Ù. ÀÌ µ¥ÀÌÅÍ ±¸Á¶Ã¼´Â .Aq Pa sys/msg.h ±×¸®°í Á¤ÀǵǾî ÀÌÇÏ¿Í °°Àº ¸â¹ö°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù (±× ¿ÜÀÇ ¸â¹öµµ ÀÖ½À´Ï´Ù). .Bd -literal struct msqid_ds { struct ipc_perm msg_perm; /* ¸Þ½ÃÁö Å¥ÀÇ ÆÛ¹Ì¼Ç ºñÆ® */ struct msg *msg_first; /* Å¥ÀÇ ÃÖÃÊÀÇ ¸Þ¼¼Áö */ struct msg *msg_last; /* Å¥ÀÇ ¸¶Áö¸· ¸Þ¼¼Áö */ u_long msg_cbytes; /* Å¥·Î »ç¿ëÇϰí ÀÖ´Â ¹ÙÀÌÆ®¼ö */ u_long msg_qnum; /* Å¥·Î »ç¿ëÇϰí ÀÖ´Â ¸Þ¼¼Áö¼ö */ u_long msg_qbytes; /* Å¥·Î »ç¿ëÇÏ´Â ÃÖ´ë ¹ÙÀÌÆ®¼ö */ pid_t msg_lspid; /* ¸¶Áö¸· msgsnd ÀÇ ÇÁ·Î¼¼½º ID */ pid_t msg_lrpid; /* ¸¶Áö¸· msgrcv ÀÇ ÇÁ·Î¼¼½º ID */ time_t msg_stime; /* ¸¶Áö¸· msgsnd ÀÇ ½Ã°£ */ long msg_pad1; time_t msg_rtime; /* ¸¶Áö¸· msgrcv ÀÇ ½Ã°£ */ long msg_pad2; time_t msg_ctime; /* ¸¶Áö¸· msgctl ÀÇ ½Ã°£ */ long msg_pad3; long msg_pad4[4]; }; .Ed .Pp .Vt shmid_ds ±¸Á¶Ã¼ Áß(¾È)¿¡¼­ »ç¿ëµÈ´Ù .Vt ipc_perm ±¸Á¶Ã¼´Â, .Aq Pa sys/ipc.h ±×¸®°í ÀÌÇÏ¿Í °°ÀÌ Á¤Àǵǰí ÀÖ½À´Ï´Ù. .Bd -literal struct ipc_perm { ushort cuid; /* »ý¼ºÀÚÀÇ À¯Àú ID */ ushort cgid; /* »ý¼ºÀÚÀÇ ±×·ì ID */ ushort uid; /* À¯Àú ID */ ushort gid; /* ±×·ì ID */ ushort mode; /* r/w ÆÛ¹Ì¼Ç */ ushort seq; /* ¼øÂ÷ ¼ø¼­ ¹øÈ£ (ÀÏÀÇ¿¡ »ý¼ºµÈ msg/sem/shm ID) */ key_t key; /* À¯Àú°¡ ÁöÁ¤ÇÑ msg/sem/shm Ű */ }; .Ed .Pp .Fn msgctl ÇÏÁö¸¸ ½ÇÇàÇÏ´Â ¿ÀÆÛ·¹À̼ÇÀº, ÀÌÇÏ Áß 1 °³·Î .Fa cmd ±×¸®°í ÁöÁ¤µË´Ï´Ù. .Bl -tag -width IPC_RMIDX .It Dv IPC_STAT ¸Þ½ÃÁö Å¥ÀÇ Á¤º¸¸¦ ¸ð¾Æ .Fa buf ÇÏÁö¸¸ °¡¸®Å°´Â ±¸Á¶Ã¼¿¡ ¹èÄ¡ÇÕ´Ï´Ù. .It Dv IPC_SET .Fa msqid ¿¡ °ü·ÃÇÏ´Â ±¸Á¶Ã¼ÀÇ .Va msg_perm.uid Çʵå, .Va msg_perm.gid Çʵå, .Va msg_perm.mode Çʵå, .Va msg_qbytes ÇʵåÀÇ °ªÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÌ °ªÀº, .Fa buf ÇÏÁö¸¸ °¡¸®Å°´Â ±¸Á¶Ã¼·Î ´ëÀÀÇÏ´Â Çʵå·ÎºÎÅÍ ³õĨ´Ï´Ù. ÀÌ ¿ÀÆÛ·¹À̼ÇÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Â °ÍÀº, ½´ÆÛ À¯Àú, ¶Ç´Â ¸Þ½ÃÁö Å¥¿¡ °ü·ÃÇÑ´Ù µ¥ÀÌÅÍ ±¸Á¶Ã¼ÀÇ .Va msg_perm.cuid Àΰ¡ .Va msg_perm.uid (¿Í)°ú µ¿ÀÏÇÑ ½ÇÈ¿ À¯Àú ID ¸¦ °¡Áö´Â ÇÁ·Î¼¼½º¸¸ÀÔ´Ï´Ù. .Va msg_qbytes ÀÇ °ªÀ» ´Ã¸± ¼ö ÀÖ´Â °ÍÀº, ½´ÆÛ À¯Àú¸¸ÀÔ´Ï´Ù. ½Ã½ºÅÛ Á¦ÇÑ ( .Aq Pa sys/msg.h ÀÇ MSGMNB)¸¦ ³Ñ¾ú´Ù .Va msg_qbytes ÀÇ °ªÀº, ±× Á¦ÇÑÀ¸·Î Àß¶ó ¹ö¸± ¼ö ÀÖ½À´Ï´Ù. .It Dv IPC_RMID .Fa msqid ÇÏÁö¸¸ ÁöÁ¤ÇÏ´Â ¸Þ½ÃÁö Å¥¸¦ »èÁ¦ÇØ, .Fa msqid ¿¡ °ü·ÃÇÑ´Ù µ¥ÀÌÅ͸¦ ÆÄ±«ÇÕ´Ï´Ù. ½´ÆÛ À¯Àú, ¶Ç´Â, Å¥¿¡ °ü·ÃÇÏ´Â µ¥ÀÌÅÍ ±¸Á¶Ã¼ÀÇ .Va msg_perm.cuid ¶Ç´Â .Va msg_perm.uid ÀÇ °ªÀÌ, ½ÇÈ¿ À¯Àú ID ¿¡ µ¿ÀÏÇÑ ÇÁ·Î¼¼½º¸¸ÀÌ, À̰ÍÀ» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. .El .Pp ¸Þ½ÃÁö Å¥·ÎºÎÅÍÀÇ µ¶Æ÷ÇÔ±ÇÀ̳ª ¸Þ½ÃÁö Å¥¿¡ÀÇ ±â·Ï±Ç ( .Xr msgsnd 3 (¿Í)°ú .Xr msgrcv 3 ÂüÁ¶)´Â, ÆÄÀϰú °°ÀÌ ( .Xr chmod 2 ÂüÁ¶), .Va msg_perm.mode Çʵ忡 ÀÇÇØ Á¤ÇØÁý´Ï´Ù. ½ÇÈ¿ À¯Àú ID ´Â, .Va msg_perm.cuid ÇʵåÀΰ¡ .Va msg_perm.uid Çʵå¿Í ÀÏÄ¡ÇØ, ½ÇÈ¿ ±×·ì ID ´Â, .Va msg_perm.cgid Àΰ¡ .Va msg_perm.gid (¿Í)°ú ÀÏÄ¡ÇÕ´Ï´Ù. .Sh ¹Ýȯ°ª .Rv -std msgctl .Sh ¿¡·¯ .Fn msgctl (Àº)´Â, ÀÌÇÏ¿Í °°Àº °æ¿ì¿¡ ¿¡·¯°¡ µË´Ï´Ù. .Bl -tag -width Er .It Bq Er EPERM .Fa cmd ÇÏÁö¸¸ IPC_SET ³ª IPC_RMID ¿Í µ¿ÀÏÇϰí, ¼ÒÈ¯ÃøÀÌ ½´ÆÛ À¯Àú°¡ ¾Æ´Ñ °æ¿ì. ¶Ç´Â ½ÇÈ¿ À¯Àú ID °¡ ¸Þ½ÃÁö Å¥¿¡ °ü·ÃÇÏ´Â µ¥ÀÌÅÍ ±¸Á¶ÀÇ .Va msg_perm.uid ÇʵåÀΰ¡ .Va msg_perm.cuid Çʵå¿Í ÀÏÄ¡ÇÏÁö ¾Ê´Â °æ¿ì. .Pp IPC_SET ¸¦ ÀÌ¿ëÇØ .Va msg_qbytes ÀÇ °ªÀ» ¿Ã¸®·Á°í ÇßÁö¸¸, ¼ÒÈ¯ÃøÀÌ ½´ÆÛ À¯Àú°¡ ¾Æ´Ñ °æ¿ì. .It Bq Er EACCES ¸í·ÉÀÌ IPC_STAT ÀÌÁö¸¸, ÀÌ ¸Þ½ÃÁö Å¥ÀÇ µ¶Æ÷ÇÔ±ÇÀÌ ¼Òȯ Ãø¿¡ ¾ø´Â °æ¿ì. .It Bq Er EINVAL .Fa msqid ÇÏÁö¸¸ ¿Ã¹Ù¸¥ ¸Þ½ÃÁö Å¥ ID °¡ ¾Æ´Ñ °æ¿ì. .Pp .Va cmd ÇÏÁö¸¸ ¿Ã¹Ù¸¥ ¸í·ÉÀÌ ¾Æ´Ñ °æ¿ì. .It Bq Er EFAULT .Fa buf ÇÏÁö¸¸ ¿Ã¹Ù¸¥ ÁÖ¼Ò¸¦ ÁöÁ¤Çϰí ÀÖÁö ¾Ê´Â °æ¿ì. .El .Sh °ü·Ã Ç׸ñ .Xr msgget 3 , .Xr msgrcv 3 , .Xr msgsnd 3 .Sh ¿ª»ç ¸Þ½ÃÁö Å¥´Â, .At V ÀÇ ÃÖÃÊÀÇ ¸±¸®½º¿¡ Ãß°¡µÇ¾ú½À´Ï´Ù. .\"kuma 1999-11-12