X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=draft%2Fman2%2Fmsgop.2;h=3bb7ff0685cf816abc83f249018afd7d76bc9f39;hb=c1dfa2f6ab1bbed84992d3c59ee9925f4d453668;hp=e7b83a61e5aa8f0fc07d29ff0e7a750a2d88fbfa;hpb=633a2252e0be3c867dce264a180a89ce8181d36f;p=linuxjm%2FLDP_man-pages.git diff --git a/draft/man2/msgop.2 b/draft/man2/msgop.2 index e7b83a61..3bb7ff06 100644 --- a/draft/man2/msgop.2 +++ b/draft/man2/msgop.2 @@ -1,5 +1,6 @@ .\" Copyright 1993 Giorgio Ciucci .\" +.\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. @@ -19,6 +20,7 @@ .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. +.\" %%%LICENSE_END .\" .\" Modified Tue Oct 22 16:40:11 1996 by Eric S. Raymond .\" Modified Mon Jul 10 21:09:59 2000 by aeb @@ -35,77 +37,31 @@ .\" Added notes on /proc files .\" FIXME . Add example programs to this page. .\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Modified 2000-09-23, HANATAKA Shinya -.\" Updated 2002-11-26, Kentaro Shirakata -.\" Updated 2005-03-04, Akihiro MOTOKI -.\" Updated 2006-03-05, Akihiro MOTOKI, LDP v2.25 -.\" Updated 2008-08-09, Akihiro MOTOKI, LDP v3.05 +.\"******************************************************************* .\" -.\"WORD: message ¥á¥Ã¥»¡¼¥¸ -.\"WORD: operation Áàºî -.\"WORD: queue ¥­¥å¡¼ -.\"WORD: process ¥×¥í¥»¥¹ -.\"WORD: catch Êá³Í(catch) -.\"WORD: signal ¥·¥°¥Ê¥ë -.\"WORD: suspend Ää»ß(suspend) -.\"WORD: sleep Ää»ß(sleep) -.\"WORD: block Ää»ß(block) -.\"WORD: process-ID ¥×¥í¥»¥¹ID -.\"WORD: type ·¿ -.\"WORD: policy Êý¿Ë -.\"WORD: super-user ¥¹¡¼¥Ñ¡¼¡¦¥æ¡¼¥¶¡¼ -.\"WORD: current time ¸½ºß»þ¹ï -.\"WORD: implement ¼ÂÁõ +.\" This file was generated with po4a. Translate the source file. .\" -.TH MSGOP 2 2008-04-23 "Linux" "Linux Programmer's Manual" -.\"O .SH NAME -.SH ̾Á° -.\"O msgrcv, msgsnd \- message operations -msgrcv, msgsnd \- ¥á¥Ã¥»¡¼¥¸Áàºî -.\"O .SH SYNOPSIS -.SH ½ñ¼° +.\"******************************************************************* +.TH MSGOP 2 2012\-05\-31 Linux "Linux Programmer's Manual" +.SH 名前 +msgrcv, msgsnd \- System V メッセージキュー操作 +.SH 書式 .nf -.B #include -.B #include -.B #include +\fB#include \fP +\fB#include \fP +\fB#include \fP .sp -.BI "int msgsnd(int " msqid ", const void *" msgp ", size_t " msgsz \ -", int " msgflg ); +\fBint msgsnd(int \fP\fImsqid\fP\fB, const void *\fP\fImsgp\fP\fB, size_t \fP\fImsgsz\fP\fB, int \fP\fImsgflg\fP\fB);\fP .sp -.BI "ssize_t msgrcv(int " msqid ", void *" msgp ", size_t " msgsz \ -", long " msgtyp , -.BI " int " msgflg ); +\fBssize_t msgrcv(int \fP\fImsqid\fP\fB, void *\fP\fImsgp\fP\fB, size_t \fP\fImsgsz\fP\fB, long \fP\fImsgtyp\fP\fB,\fP +\fB int \fP\fImsgflg\fP\fB);\fP .fi -.\"O .SH DESCRIPTION -.SH ÀâÌÀ -.\"O The -.\"O .BR msgsnd () -.\"O and -.\"O .BR msgrcv () -.\"O system calls are used, respectively, to send messages to, -.\"O and receive messages from, a message queue. -.\"O The calling process must have write permission on the message queue -.\"O in order to send a message, and read permission to receive a message. -¥·¥¹¥Æ¥à¥³¡¼¥ë -.BR msgsnd () -¤È -.BR msgrcv () -¤Ï¤½¤ì¤¾¤ì¡¢¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Ø¤Î¥á¥Ã¥»¡¼¥¸¤ÎÁ÷¿®¤È¡¢ -¥á¥Ã¥»¡¼¥¸¤Î¼õ¿®¤Ë»ÈÍѤµ¤ì¤ë¡£¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ï¡¢ -¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¤¿¤á¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÂФ¹¤ë½ñ¤­¹þ¤ßµö²Ä¤ò¡¢ -¥á¥Ã¥»¡¼¥¸¤ò¼õ¿®¤¹¤ë¤¿¤á¤Ë¤ÏÆɤ߽Ф·µö²Ä¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ +.SH 説明 +システムコール \fBmsgsnd\fP() と \fBmsgrcv\fP() はそれぞれ、 System V メッセージ・キューへのメッセージの送信と、 +メッセージの受信に使用される。呼び出し元プロセスは、 メッセージを送信するためにはメッセージ・キューに対する書き込み許可を、 +メッセージを受信するためには読み出し許可を持っていなければならない。 .PP -.\"O The -.\"O .I msgp -.\"O argument is a pointer to caller-defined structure -.\"O of the following general form: -¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ï°Ê²¼¤Ë¼¨¤¹¹½Â¤ÂΤòÍÑ°Õ¤·¡¢¤³¤Î¹½Â¤ÂΤؤΠ-¥Ý¥¤¥ó¥¿¤ò -.msgp -°ú¤­¿ô¤È¤·¤ÆÅϤ¹¡£ +呼び出し元プロセスは以下に示す構造体を用意し、この構造体への ポインタを \fImsgp\fP 引き数として渡す。 .in +4n .nf @@ -116,633 +72,166 @@ struct msgbuf { .fi .in .PP -.\"O The -.\"O .I mtext -.\"O field is an array (or other structure) whose size is specified by -.\"O .IR msgsz , -.\"O a nonnegative integer value. -.I mtext -¥Õ¥£¡¼¥ë¥É¤ÏÇÛÎó (¤Þ¤¿¤Ï¾¤Î¹½Â¤ÂÎ) ¤Ç¡¢¤½¤ÎÂ礭¤µ¤Ï -ÈóÉé¤ÎÀ°¿ô¤Ç¤¢¤ë -.I msgsz -¤Ç»ØÄꤵ¤ì¤ë¡£ -.\"O Messages of zero length (i.e., no -.\"O .I mtext -.\"O field) are permitted. -Ťµ 0 ¤Î¥á¥Ã¥»¡¼¥¸ (¤Ä¤Þ¤ê -.I mtext -¥Õ¥£¡¼¥ë¥É¤¬¤Ê¤¤¥á¥Ã¥»¡¼¥¸) ¤âǧ¤á¤é¤ì¤Æ¤¤¤ë¡£ -.\"O The -.\"O .I mtype -.\"O field must have a strictly positive integer value. -.\"O This value can be -.\"O used by the receiving process for message selection -.\"O (see the description of -.\"O .BR msgrcv () -.\"O below). -.B mtype -¥Õ¥£¡¼¥ë¥É¤Ï¸·Ì©¤ËÀµ¤ÎÀ°¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ -¤³¤ÎÃͤϡ¢¥á¥Ã¥»¡¼¥¸¤ò¼õ¿®¤¹¤ë¥×¥í¥»¥¹¤Ç¥á¥Ã¥»¡¼¥¸¤òÁªÂò¤¹¤ë¤¿¤á¤Ë -»ÈÍѤµ¤ì¤ë (²¼µ­¤Î -.BR msgrcv () -¤ÎÀâÌÀ¤ò»²¾È¤Î¤³¤È)¡£ +\fImtext\fP フィールドは配列 (または他の構造体) で、その大きさは 非負の整数である \fImsgsz\fP で指定される。 長さ 0 のメッセージ +(つまり \fImtext\fP フィールドがないメッセージ) も認められている。 \fBmtype\fP フィールドは厳密に正の整数でなければならない。 +この値は、メッセージを受信するプロセスでメッセージを選択するために 使用される (下記の \fBmsgrcv\fP() の説明を参照のこと)。 .SS msgsnd() -.\"O The -.\"O .BR msgsnd () -.\"O system call appends a copy of the message pointed to by -.\"O .I msgp -.\"O to the message queue whose identifier is specified -.\"O by -.\"O .IR msqid . -.BR msgsnd () -¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï -.I msgp -°ú¤­¿ô¤Ç»ØÄꤵ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤Î¥³¥Ô¡¼¤ò -.I msqid -¤Ç»ØÄꤵ¤ì¤¿¼±Ê̻Ҥò»ý¤Ä¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ØÄɲ乤롣 +\fBmsgsnd\fP() システムコールは \fImsgp\fP 引き数で指定されたメッセージのコピーを \fImsqid\fP +で指定された識別子を持つメッセージ・キューへ追加する。 .PP -.\"O If sufficient space is available in the queue, -.\"O .BR msgsnd () -.\"O succeeds immediately. -¥­¥å¡¼¤Ë½½Ê¬¤Ê¶õ¤­ÍÆÎ̤¬¤¢¤ë¾ì¹ç¡¢ -.BR msgsnd () -¤Ïľ¤Á¤ËÀ®¸ù¤¹¤ë¡£ -.\"O (The queue capacity is defined by the -.\"O .I msg_bytes -.\"O field in the associated data structure for the message queue. -.\"O During queue creation this field is initialized to -.\"O .B MSGMNB -.\"O bytes, but this limit can be modified using -.\"O .BR msgctl (2).) -(¥­¥å¡¼¤ÎÍÆÎ̤ϡ¢¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥Ç¡¼¥¿¹½Â¤ÂΤΠ-.I msg_bytes -¥Õ¥£¡¼¥ë¥É¤ÇÄêµÁ¤µ¤ì¤ë¡£ -¥­¥å¡¼ºîÀ®»þ¤Ë¤³¤Î¥Õ¥£¡¼¥ë¥É¤Ï -.B MSGMNB -¤Ë½é´ü²½¤µ¤ì¤ë¤¬¡¢¤³¤ÎÀ©¸Â¤Ï -.BR msgctl (2) -¤ò»È¤Ã¤ÆÊѹ¹¤Ç¤­¤ë¡£) -.\"O If insufficient space is available in the queue, then the default -.\"O behavior of -.\"O .BR msgsnd () -.\"O is to block until space becomes available. -¥­¥å¡¼¤Ë½½Ê¬¤Ê¶õ¤­ÍÆÎ̤¬¤Ê¤¤¾ì¹ç¡¢ -¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï -.BR msgsnd () -¤Ï¶õ¤­ÍÆÎ̤¬¤Ç¤­¤ë¤Þ¤ÇÄä»ß (block) ¤¹¤ë¡£ -.\"O If -.\"O .B IPC_NOWAIT -.\"O is specified in -.\"O .IR msgflg , -.\"O then the call instead fails with the error -.\"O .BR EAGAIN . -.I msgflg -¤Ë -.B IPC_NOWAIT -¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ï¡¢¥¨¥é¡¼ -.B EAGAIN -¤Ç¼ºÇÔ¤¹¤ë¡£ +キューに十分な空き容量がある場合、 \fBmsgsnd\fP() は直ちに成功する。 (キューの容量は、メッセージ・キューのデータ構造体の +\fImsg_qbytes\fP フィールドで定義される。 キュー作成時にこのフィールドは \fBMSGMNB\fP に初期化されるが、この制限は +\fBmsgctl\fP(2) を使って変更できる。) キューに十分な空き容量がない場合、 デフォルトでは \fBmsgsnd\fP() +は空き容量ができるまで停止 (block) する。 \fImsgflg\fP に \fBIPC_NOWAIT\fP が指定された場合は、エラー \fBEAGAIN\fP +で失敗する。 -.\"O A blocked -.\"O .BR msgsnd () -.\"O call may also fail if: -Ää»ß¤·¤Æ¤¤¤ë -.BR msgsnd () -¤Ï°Ê²¼¤Î¾ì¹ç¤Ë¤â¼ºÇÔ¤¹¤ë¡£ +停止している \fBmsgsnd\fP() は以下の場合にも失敗する。 .IP * 2 -.\"O the queue is removed, -.\"O in which case the system call fails with -.\"O .I errno -.\"O set to -.\"O .BR EIDRM ; -.\"O or -¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¡£ -¤³¤Î¾ì¹ç¡¢ -.I errno -¤Ï -.B EIDRM -¤ËÀßÄꤵ¤ì¤ë¡£ +キューが削除された。 この場合、 \fIerrno\fP は \fBEIDRM\fP に設定される。 .IP * -.\"O a signal is caught, in which case the system call fails -.\"O with -.\"O .I errno -.\"O set to -.\"O .BR EINTR ; see -.\"O .BR signal (7). -¥·¥°¥Ê¥ë¤¬Ê᪤µ¤ì¤¿¡£ -¤³¤Î¾ì¹ç¡¢ -.I errno -¤Ï -.BR EINTR -¤ËÀßÄꤵ¤ì¤ë¡£ -.BR signal (7) -»²¾È¡£ -.\"O .RB ( msgsnd () -.\"O is never automatically restarted after being interrupted by a -.\"O signal handler, regardless of the setting of the -.\"O .B SA_RESTART -.\"O flag when establishing a signal handler.) -.RB ( msgsnd () -¤Ï¡¢¤¿¤È¤¨¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ÎÀßÄê»þ¤Ë -.B SA_RESTART -¤ò»ØÄꤷ¤Æ¤¤¤¿¤È¤·¤Æ¤â¡¢¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Ë¤è¤Ã¤Æ³ä¤ê¹þ¤Þ¤ì¤¿¸å¤Ç -¼«Æ°Åª¤ËºÆ¥¹¥¿¡¼¥È¤¹¤ë¤³¤È¤Ï·è¤·¤Æ¤Ê¤¤¡£) +シグナルが捕捉された。 この場合、 \fIerrno\fP は \fBEINTR\fP に設定される。 \fBsignal\fP(7) 参照。 (\fBmsgsnd\fP() +は、たとえシグナルハンドラの設定時に \fBSA_RESTART\fP を指定していたとしても、シグナルハンドラによって割り込まれた後で +自動的に再スタートすることは決してない。) .PP -.\"O Upon successful completion the message queue data structure is updated -.\"O as follows: -Àµ¾ï¤Ë½ªÎ»¤·¤¿¾ì¹ç¡¢¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥Ç¡¼¥¿¹½Â¤ÂΤϰʲ¼¤Î¤è¤¦¤Ë -¹¹¿·¤µ¤ì¤ë: +正常に終了した場合、メッセージ・キューのデータ構造体は以下のように 更新される: .IP -.\"O .I msg_lspid -.\"O is set to the process ID of the calling process. -.I msg_lspid -¤Ë¤Ï¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹ ID ¤¬ÀßÄꤵ¤ì¤ë¡£ +\fImsg_lspid\fP には呼び出し元プロセスのプロセス ID が設定される。 .IP -.\"O .I msg_qnum -.\"O is incremented by 1. -.I msg_qnum -¤Ï 1 Áý²Ã¤¹¤ë¡£ +\fImsg_qnum\fP は 1 増加する。 .IP -.\"O .I msg_stime -.\"O is set to the current time. -.I msg_stime -¤Ë¤Ï¸½ºß»þ¹ï¤¬ÀßÄꤵ¤ì¤ë¡£ +\fImsg_stime\fP には現在時刻が設定される。 .SS msgrcv() -.\"O The -.\"O .BR msgrcv () -.\"O system call removes a message from the queue specified by -.\"O .I msqid -.\"O and places it in the buffer -.\"O pointed to by -.\"O .IR msgp . -.BR msgrcv () -¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï -.I msqid -¤Ç»ØÄꤵ¤ì¤¿¥­¥å¡¼¤«¤é¥á¥Ã¥»¡¼¥¸¤òºï½ü¤·¡¢ -.I msgp -¤Ç»ØÄꤵ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤Ë¤½¤Î¥á¥Ã¥»¡¼¥¸¤ò³ÊǼ¤¹¤ë¡£ +\fBmsgrcv\fP() システムコールは \fImsqid\fP で指定されたキューからメッセージを削除し、 \fImsgp\fP +で指定されたバッファにそのメッセージを格納する。 .PP -.\"O The argument -.\"O .I msgsz -.\"O specifies the maximum size in bytes for the member -.\"O .I mtext -.\"O of the structure pointed to by the -.\"O .I msgp -.\"O argument. -.I msgsz -°ú¤­¿ô¤Ë¤Ï -.I msgp -°ú¤­¿ô¤Ç»ØÄꤵ¤ì¤¿¹½Â¤ÂΤΠ-.I mtext -¥á¥ó¥Ð¡¼¤ÎºÇÂç¤Î¥Ð¥¤¥È¿ô¤ò»ØÄꤹ¤ë¡£ -.\"O If the message text has length greater than -.\"O .IR msgsz , -.\"O then the behavior depends on whether -.\"O .B MSG_NOERROR -.\"O is specified in -.\"O .IR msgflg . -.\"O If -.\"O .B MSG_NOERROR -.\"O is specified, then -.\"O the message text will be truncated (and the truncated part will be -.\"O lost); if -.\"O .B MSG_NOERROR -.\"O is not specified, then -.\"O the message isn't removed from the queue and -.\"O the system call fails returning \-1 with -.\"O .I errno -.\"O set to -.\"O .BR E2BIG . -¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÎŤµ¤¬ -.I msgsz -¤è¤êÂ礭¤¤¾ì¹ç¤ÎÆ°ºî¤Ï¡¢ -.I msgflg -¤Ë -.B MSG_NOERROR -¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ç·è¤Þ¤ë¡£ -.B MSG_NOERROR -¤¬»ØÄꤵ¤ì¤Æ¤¤¤ì¤Ð¡¢¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÏÀÚ¤êµÍ¤á¤é¤ì¤ë -(ÀÚ¤ê¼Î¤Æ¤é¤ì¤¿Éôʬ¤Ï¼º¤ï¤ì¤ë)¡£ -.B MSG_NOERROR -¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¥á¥Ã¥»¡¼¥¸¤Ï¥­¥å¡¼¤«¤éºï½ü¤µ¤ì¤º¡¢ -¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï \-1 ¤òÊÖ¤·¤Æ¼ºÇÔ¤·¡¢ -.I errno -¤Ë -.B E2BIG -¤¬ÀßÄꤵ¤ì¤ë¡£ +\fImsgsz\fP 引き数には \fImsgp\fP 引き数で指定された構造体の \fImtext\fP メンバーの最大のバイト数を指定する。 +メッセージのテキストの長さが \fImsgsz\fP より大きい場合の動作は、 \fImsgflg\fP に \fBMSG_NOERROR\fP +が指定されているかどうかで決まる。 \fBMSG_NOERROR\fP が指定されていれば、メッセージのテキストは切り詰められる +(切り捨てられた部分は失われる)。 \fBMSG_NOERROR\fP が指定されていなければ、メッセージはキューから削除されず、 システムコールは \-1 +を返して失敗し、 \fIerrno\fP に \fBE2BIG\fP が設定される。 .PP -.\"O The argument -.\"O .I msgtyp -.\"O specifies the type of message requested as follows: -.I msgtyp -°ú¤­¿ô¤Ë¤ÏÍ׵᤹¤ë¥á¥Ã¥»¡¼¥¸¤Î·¿¤ò»ØÄꤹ¤ë¡£ -·¿¤Ï°Ê²¼¤Î¤è¤¦¤Ë»ØÄꤹ¤ë: +\fImsgtyp\fP 引き数には要求するメッセージの型を指定する。 型は以下のように指定する: .IP * 2 -.\"O If -.\"O .I msgtyp -.\"O is 0, -.\"O then the first message in the queue is read. -.I msgtyp -¤¬ 0 ¤Ê¤é¤Ð¡¢¥­¥å¡¼¤ÎºÇ½é¤Ë¤¢¤ë¥á¥Ã¥»¡¼¥¸¤¬Æɤ߹þ¤Þ¤ì¤ë¡£ +\fImsgtyp\fP が 0 ならば、キューの最初にあるメッセージが読み込まれる。 .IP * -.\"O If -.\"O .I msgtyp -.\"O is greater than 0, -.\"O then the first message in the queue of type -.\"O .I msgtyp -.\"O is read, unless -.\"O .B MSG_EXCEPT -.\"O was specified in -.\"O .IR msgflg , -.\"O in which case -.\"O the first message in the queue of type not equal to -.\"O .I msgtyp -.\"O will be read. -.I msgtyp -¤¬ 0 ¤è¤êÂ礭¤¤¾ì¹ç¡¢ -.I msgflg -¤Ë -.B MSG_EXCEPT -¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ -.I msgtyp -·¿¤Î¥­¥å¡¼¤ÎºÇ½é¤Î¥á¥Ã¥»¡¼¥¸¤¬Æɤ߹þ¤Þ¤ì¤ë¡£ -.B MSG_EXCEPT -¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ï¡¢ -.I msgtyp -·¿°Ê³°¤Î¥­¥å¡¼¤ÎºÇ½é¤Î¥á¥Ã¥»¡¼¥¸¤¬Æɤ߹þ¤Þ¤ì¤ë¡£ +\fImsgtyp\fP が 0 より大きい場合、 \fImsgflg\fP に \fBMSG_EXCEPT\fP が指定されていなければ、 \fImsgtyp\fP +型のキューの最初のメッセージが読み込まれる。 \fBMSG_EXCEPT\fP が指定された場合は、 \fImsgtyp\fP +型以外のキューの最初のメッセージが読み込まれる。 .IP * -.\"O If -.\"O .I msgtyp -.\"O is less than 0, -.\"O then the first message in the queue with the lowest type less than or -.\"O equal to the absolute value of -.\"O .I msgtyp -.\"O will be read. -.I msgtyp -¤¬ 0 ¤è¤ê¾®¤µ¤±¤ì¤Ð¡¢ -.I msgtyp -¤ÎÀäÂÐÃͰʲ¼¤ÇºÇ¤â¾®¤µ¤¤·¿¤ò»ý¤Ä¥­¥å¡¼¤ÎºÇ½é¤Î¥á¥Ã¥»¡¼¥¸¤¬Æɤ߹þ¤Þ¤ì¤ë¡£ +\fImsgtyp\fP が 0 より小さければ、 \fImsgtyp\fP の絶対値以下で最も小さい型を持つキューの最初のメッセージが読み込まれる。 .PP -.\"O The -.\"O .I msgflg -.\"O argument is a bit mask constructed by ORing together zero or more -.\"O of the following flags: -.I msgflg -°ú¤­¿ô¤Ë¤Ï¡¢°Ê²¼¤Î¥Õ¥é¥°¤òǤ°Õ¤Î¿ô¤À¤± (0¸Ä¤â²Ä)¡¢¤³¤ì¤é¤Î OR ¤Ç»ØÄꤹ¤ë: -.TP -.B IPC_NOWAIT -.\"O Return immediately if no message of the requested type is in the queue. -.\"O The system call fails with -.\"O .I errno -.\"O set to -.\"O .BR ENOMSG . -¥­¥å¡¼¤ËÍ׵ᤵ¤ì¤¿·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ïľ¤Á¤ËÊ֤롣 -¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¼ºÇÔ¤·¡¢ -.I errno -¤Ë¤Ï -.B ENOMSG -¤¬ÀßÄꤵ¤ì¤ë¡£ -.TP -.B MSG_EXCEPT -.\"O Used with -.\"O .I msgtyp -.\"O greater than 0 -.\"O to read the first message in the queue with message type that differs -.\"O from -.\"O .IR msgtyp . -0 ¤è¤êÂ礭¤Ê -.I msgtyp -¤È°ì½ï¤Ë»ÈÍѤ·¤Æ¡¢ -.I msgtyp -°Ê³°¤Î¥­¥å¡¼¤ÎºÇ½é¤Î¥á¥Ã¥»¡¼¥¸¤òÆɤ߹þ¤à¡£ -.TP -.B MSG_NOERROR -.\"O To truncate the message text if longer than -.\"O .I msgsz -.\"O bytes. -.I msgsz -¥Ð¥¤¥È¤è¤ê¤âŤ«¤Ã¤¿¾ì¹ç¤Ï¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤òÀÚ¤êµÍ¤á¤ë¡£ +\fImsgflg\fP 引き数には、以下のフラグを任意の数だけ (0個も可)、これらの OR で指定する: +.TP +\fBIPC_NOWAIT\fP +キューに要求された型のメッセージがない場合には直ちに返る。 システムコールは失敗し、 \fIerrno\fP には \fBENOMSG\fP が設定される。 +.TP +\fBMSG_EXCEPT\fP +0 より大きな \fImsgtyp\fP と一緒に使用して、 \fImsgtyp\fP 以外のキューの最初のメッセージを読み込む。 +.TP +\fBMSG_NOERROR\fP +\fImsgsz\fP バイトよりも長かった場合はメッセージのテキストを切り詰める。 .PP -.\"O If no message of the requested type is available and -.\"O .B IPC_NOWAIT -.\"O isn't specified in -.\"O .IR msgflg , -.\"O the calling process is blocked until one of the following conditions occurs: -Í׵ᤵ¤ì¤¿·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬Â¸ºß¤»¤º¡¢ -.I msgflg -¤Ë -.B IPC_NOWAIT -¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ï -°Ê²¼¤Î¤¤¤º¤ì¤«¤Î¾õ¶·¤Ë¤Ê¤ë¤Þ¤ÇÄä»ß (block) ¤µ¤ì¤ë: +要求された型のメッセージが存在せず、 \fImsgflg\fP に \fBIPC_NOWAIT\fP が指定されていなかった場合、呼び出し元プロセスは +以下のいずれかの状況になるまで停止 (block) される: .IP * 2 -.\"O A message of the desired type is placed in the queue. -Í׵ᤷ¤Æ¤¤¤ë·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬¥­¥å¡¼¤ØÆþ¤ì¤é¤ì¤¿¡£ +要求している型のメッセージがキューへ入れられた。 .IP * -.\"O The message queue is removed from the system. -.\"O In this case the system call fails with -.\"O .I errno -.\"O set to -.\"O .BR EIDRM . -¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬¥·¥¹¥Æ¥à¤«¤éºï½ü¤µ¤ì¤¿¡£ -¤³¤Î¾ì¹ç¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¼ºÇÔ¤·¡¢ -.I errno -¤Ë -.B EIDRM -¤¬ÀßÄꤵ¤ì¤ë¡£ +メッセージ・キューがシステムから削除された。 この場合、システムコールは失敗し、 \fIerrno\fP に \fBEIDRM\fP が設定される。 .IP * -.\"O The calling process catches a signal. -.\"O In this case the system call fails with -.\"O .I errno -.\"O set to -.\"O .BR EINTR . -¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿¡£ -¤³¤Î¾ì¹ç¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¼ºÇÔ¤·¡¢ -.I errno -¤Ë -.B EINTR -¤¬ÀßÄꤵ¤ì¤ë¡£ -.\"O .RB ( msgrcv () -.\"O is never automatically restarted after being interrupted by a -.\"O signal handler, regardless of the setting of the -.\"O .B SA_RESTART -.\"O flag when establishing a signal handler.) -.RB ( msgrcv () -¤Ï¡¢¤¿¤È¤¨¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ÎÀßÄê»þ¤Ë -.B SA_RESTART -¤ò»ØÄꤷ¤Æ¤¤¤¿¤È¤·¤Æ¤â¡¢¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Ë¤è¤Ã¤Æ³ä¤ê¹þ¤Þ¤ì¤¿¸å¤Ç -¼«Æ°Åª¤ËºÆ¥¹¥¿¡¼¥È¤¹¤ë¤³¤È¤Ï·è¤·¤Æ¤Ê¤¤¡£) +呼び出し元プロセスがシグナルを捕獲した。 この場合、システムコールは失敗し、 \fIerrno\fP に \fBEINTR\fP が設定される。 +(\fBmsgrcv\fP() は、たとえシグナルハンドラの設定時に \fBSA_RESTART\fP +を指定していたとしても、シグナルハンドラによって割り込まれた後で 自動的に再スタートすることは決してない。) .PP -.\"O Upon successful completion the message queue data structure is updated -.\"O as follows: -¼Â¹Ô¤ËÀ®¸ù¤·¤¿¾ì¹ç¡¢¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥Ç¡¼¥¿¹½Â¤ÂΤϰʲ¼¤Î¤è¤¦¤Ë -¹¹¿·¤µ¤ì¤ë: +正常に終了した場合、メッセージ・キューのデータ構造体は以下のように 更新される: .IP -.\"O .I msg_lrpid -.\"O is set to the process ID of the calling process. -.I msg_lrpid -¤Ë¤Ï¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹ ID ¤¬ÀßÄꤵ¤ì¤ë¡£ +\fImsg_lrpid\fP には呼び出し元プロセスのプロセス ID が設定される。 .IP -.\"O .I msg_qnum -.\"O is decremented by 1. -.I msg_qnum -¤Ï 1 ¸º»»¤µ¤ì¤ë¡£ +\fImsg_qnum\fP は 1 減算される。 .IP -.\"O .I msg_rtime -.\"O is set to the current time. -.I msg_rtime -¤Ë¤Ï¸½ºß¤Î»þ¹ï¤¬ÀßÄꤵ¤ì¤ë¡£ -.\"O .SH "RETURN VALUE" -.SH ÊÖ¤êÃÍ -.\"O On failure both functions return \-1 -.\"O with -.\"O .I errno -.\"O indicating the error, -.\"O otherwise -.\"O .BR msgsnd () -.\"O returns 0 -.\"O and -.\"O .BR msgrcv () -.\"O returns the number of bytes actually copied into the -.\"O .I mtext -.\"O array. -¼ºÇÔ¤·¤¿¾ì¹ç¤Ï¡¢¤É¤Á¤é¤Î´Ø¿ô¤â \-1 ¤òÊÖ¤·¡¢¥¨¥é¡¼¤ò -.I errno -¤Ëɽ¼¨¤¹¤ë¡£À®¸ù¤·¤¿¾ì¹ç¡¢ -.BR msgsnd () -¤Ï 0 ¤òÊÖ¤·¡¢ -.BR msgrcv () -¤Ï -.I mtext -ÇÛÎó¤Ë¼ÂºÝ¤Ë¥³¥Ô¡¼¤·¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£ -.\"O .SH ERRORS -.SH ¥¨¥é¡¼ -.\"O When -.\"O .BR msgsnd () -.\"O fails, -.\"O .I errno -.\"O will be set to one among the following values: -.BR msgsnd () -¤¬¼ºÇÔ¤·¤¿¾ì¹ç¡¢ -.B errno -¤Ë°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«¤¬ÀßÄꤵ¤ì¤ë: -.TP -.B EACCES -.\"O The calling process does not have write permission on the message queue, -.\"O and does not have the -.\"O .B CAP_IPC_OWNER -.\"O capability. -¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÂФ¹¤ë½ñ¤­¹þ¤ßµö²Ä¤¬¤Ê¤¯¡¢ -.B CAP_IPC_OWNER -¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤â¤Ê¤¤¡£ -.TP -.B EAGAIN -.\"O The message can't be sent due to the -.\"O .I msg_qbytes -.\"O limit for the queue and -.\"O .B IPC_NOWAIT -.\"O was specified in -.\"O .IR msgflg . -.I msg_qbytes -¤¬¥­¥å¡¼¤ÎÀ©¸Â¤òĶ¤¨¤Æ¤¤¤¿¤¿¤á¡¢¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¤³¤È¤¬¤Ç¤­¤º¡¢¤«¤Ä -.I msgflg -¤Ë -.B IPC_NOWAIT -¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¡£ -.TP -.B EFAULT -.\"O The address pointed to by -.\"O .I msgp -.\"O isn't accessible. -.I msgp -¤¬»Ø¤·¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤¬¥¢¥¯¥»¥¹²Äǽ¤Ç¤Ê¤¤¡£ -.TP -.B EIDRM -.\"O The message queue was removed. -¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¡£ -.TP -.B EINTR -.\"O Sleeping on a full message queue condition, the process caught a signal. -¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬Í׵ᤷ¤¿¾ò·ï¤òËþ¤¿¤¹¤Þ¤ÇÄä»ß¤·¤Æ¤¤¤ë»þ¤Ë¡¢ -¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿¡£ -.TP -.B EINVAL -.\"O Invalid -.\"O .I msqid -.\"O value, or nonpositive -.\"O .I mtype -.\"O value, or -.\"O invalid -.\"O .I msgsz -.\"O value (less than 0 or greater than the system value -.\"O .BR MSGMAX ). -.I msqid -¤¬ÉÔŬÀÚ¤ÊÃͤǤ¢¤ë¤«¡¢ -.I mtype -¤¬Àµ¤ÎÃͤǤʤ¤¤«¡¢ -.I msgsz -¤¬ÉÔŬÀÚ¤ÊÃÍ (0 °Ê²¼¤«¡¢¥·¥¹¥Æ¥à¤Ç·è¤Þ¤ëÃÍ -.B MSGMAX -¤è¤ê¤âÂ礭¤¤ÃÍ) ¤Ç¤¢¤ë¡£ -.TP -.B ENOMEM -.\"O The system does not have enough memory to make a copy of the -.\"O message pointed to by -.\"O .IR msgp . -.I msgp -¤¬»Ø¤¹¥á¥Ã¥»¡¼¥¸¤Î¥³¥Ô¡¼¤òºîÀ®¤¹¤ë¤Î¤Ë½½Ê¬¤Ê¥á¥â¥ê¤¬¥·¥¹¥Æ¥à¤Ë¸ºß¤·¤Ê¤¤¡£ +\fImsg_rtime\fP には現在の時刻が設定される。 +.SH 返り値 +失敗した場合は、どちらの関数も \-1 を返し、エラーを \fIerrno\fP に表示する。成功した場合、 \fBmsgsnd\fP() は 0 を返し、 +\fBmsgrcv\fP() は \fImtext\fP 配列に実際にコピーしたバイト数を返す。 +.SH エラー +\fBmsgsnd\fP() が失敗した場合、 \fBerrno\fP に以下の値のいずれかが設定される: +.TP +\fBEACCES\fP +呼び出し元プロセスにはメッセージ・キューに対する書き込み許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。 +.TP +\fBEAGAIN\fP +\fImsg_qbytes\fP がキューの制限を超えていたため、メッセージを送ることができず、かつ \fImsgflg\fP に \fBIPC_NOWAIT\fP +が指定されていた。 +.TP +\fBEFAULT\fP +\fImsgp\fP が指しているアドレスがアクセス可能でない。 +.TP +\fBEIDRM\fP +メッセージ・キューが削除された。 +.TP +\fBEINTR\fP +メッセージ・キューが要求した条件を満たすまで停止している時に、 プロセスがシグナルを捕獲した。 +.TP +\fBEINVAL\fP +\fImsqid\fP が不適切な値であるか、 \fImtype\fP が正の値でないか、 \fImsgsz\fP が不適切な値 (0 以下か、システムで決まる値 +\fBMSGMAX\fP よりも大きい値) である。 +.TP +\fBENOMEM\fP +\fImsgp\fP が指すメッセージのコピーを作成するのに十分なメモリがシステムに存在しない。 .PP -.\"O When -.\"O .BR msgrcv () -.\"O fails, -.\"O .I errno -.\"O will be set to one among the following values: -.BR msgrcv () -¤¬¼ºÇÔ¤·¤¿¾ì¹ç¤Ë¤Ï -.I errno -¤Ë°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«¤¬ÀßÄꤵ¤ì¤ë: -.TP -.B E2BIG -.\"O The message text length is greater than -.\"O .I msgsz -.\"O and -.\"O .B MSG_NOERROR -.\"O isn't specified in -.\"O .IR msgflg . -¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÎŤµ¤¬ -.I msgsz -¤è¤ê¤âÂ礭¤¯¡¢ -.I msgflg -¤Ë -.B MSG_NOERROR -¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ -.TP -.B EACCES -.\"O The calling process does not have read permission on the message queue, -.\"O and does not have the -.\"O .B CAP_IPC_OWNER -.\"O capability. -¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÂФ¹¤ëÆɤ߹þ¤ßµö²Ä¤¬¤Ê¤¯¡¢ -.B CAP_IPC_OWNER -¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤â¤Ê¤¤¡£ -.TP -.B EAGAIN -.\"O No message was available in the queue and -.\"O .B IPC_NOWAIT -.\"O was specified in -.\"O .IR msgflg . -¥­¥å¡¼¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¤¬¤Ê¤¯¡¢ -.I msgflg -¤Ë -.B IPC_NOWAIT -¤¬»ØÄꤵ¤ì¤¿¡£ -.TP -.B EFAULT -.\"O The address pointed to by -.\"O .I msgp -.\"O isn't accessible. -.I msgp -¤¬»Ø¤·¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤¬¥¢¥¯¥»¥¹²Äǽ¤Ç¤Ê¤¤¡£ -.TP -.B EIDRM -.\"O While the process was sleeping to receive a message, -.\"O the message queue was removed. -¥á¥Ã¥»¡¼¥¸¤ò¼õ¿®¤¹¤ë¤¿¤á¤Ë¥×¥í¥»¥¹¤¬Ää»ß¤·¤Æ¤¤¤ë´Ö¤Ë¡¢ -¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¡£ -.TP -.B EINTR -.\"O While the process was sleeping to receive a message, -.\"O the process caught a signal; see -.\"O .BR signal (7). -¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¤ë¤¿¤á¤Ë¥×¥í¥»¥¹¤¬Ää»ß¤·¤Æ¤¤¤ë´Ö¤Ë¡¢ -¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿¡£ -.BR signal (7) -»²¾È¡£ -.TP -.B EINVAL -.\"O .I msgqid -.\"O was invalid, or -.\"O .I msgsz -.\"O was less than 0. -.I msgqid -¤¬ÉÔÀµ¤«¡¢ -.I msgsz -¤¬ 0 ¤è¤ê¾®¤µ¤¤¡£ -.TP -.B ENOMSG -.\"O .B IPC_NOWAIT -.\"O was specified in -.\"O .I msgflg -.\"O and no message of the requested type existed on the message queue. -.I msgflg -¤Ë -.B IPC_NOWAIT -¤¬ÀßÄꤵ¤ì¤Æ¤ª¤ê¡¢ -¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÍ׵ᤵ¤ì¤¿·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬Â¸ºß¤·¤Ê¤«¤Ã¤¿¡£ -.\"O .SH "CONFORMING TO" -.SH ½àµò -SVr4, POSIX.1-2001. -.\"O .SH NOTES -.SH Ãí°Õ -.\"O The -.\"O .I msgp -.\"O argument is declared as \fIstruct msgbuf *\fP with -.\"O libc4, libc5, glibc 2.0, glibc 2.1. -.\"O It is declared as \fIvoid *\fP -.\"O with glibc 2.2 and later, as required by SUSv2 and SUSv3. -.I msgp -°ú¤­¿ô¤Ï¡¢ libc4, libc5, glibc 2.0, glibc 2.1 ¤Ç¤Ï -\fIstruct msgbuf *\fP ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤ë¡£glibc 2.2 °Ê¹ß¤Ç¤Ï¡¢ -SUSv2 ¤È SUSv3 ¤ÎÍ×µáÄ̤ꡢ\fIvoid *\fP ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤ë¡£ +\fBmsgrcv\fP() が失敗した場合には \fIerrno\fP に以下の値のいずれかが設定される: +.TP +\fBE2BIG\fP +メッセージのテキストの長さが \fImsgsz\fP よりも大きく、 \fImsgflg\fP に \fBMSG_NOERROR\fP が設定されていなかった。 +.TP +\fBEACCES\fP +呼び出し元プロセスにはメッセージ・キューに対する読み込み許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。 +.TP +\fBEAGAIN\fP +キューにはメッセージがなく、 \fImsgflg\fP に \fBIPC_NOWAIT\fP が指定された。 +.TP +\fBEFAULT\fP +\fImsgp\fP が指しているアドレスがアクセス可能でない。 +.TP +\fBEIDRM\fP +メッセージを受信するためにプロセスが停止している間に、 メッセージ・キューが削除された。 +.TP +\fBEINTR\fP +メッセージを受けるためにプロセスが停止している間に、 プロセスがシグナルを捕獲した。 \fBsignal\fP(7) 参照。 +.TP +\fBEINVAL\fP +\fImsgqid\fP が不正か、 \fImsgsz\fP が 0 より小さい。 +.TP +\fBENOMSG\fP +\fImsgflg\fP に \fBIPC_NOWAIT\fP が設定されており、 メッセージ・キューに要求された型のメッセージが存在しなかった。 +.SH 準拠 +SVr4, POSIX.1\-2001. +.SH 注意 +.\" Like Linux, the FreeBSD man pages still document +.\" the inclusion of these header files. +Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI\fP +のインクルードは必要ない。しかしながら、いくつかの古い実装ではこれらのヘッダファイルのインクルードが必要であり、 SVID +でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。 -.\"O The following limits on message queue resources affect the -.\"O .BR msgsnd () -.\"O call: -°Ê²¼¤Ï -.B msgsnd -¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ë±Æ¶Á¤¹¤ë¥·¥¹¥Æ¥àÀ©¸Â¤Ç¤¢¤ë: -.TP -.B MSGMAX -.\"O Maximum size for a message text: 8192 bytes -.\"O (on Linux, this limit can be read and modified via -.\"O .IR /proc/sys/kernel/msgmax ). -¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÎºÇÂ祵¥¤¥º: 8192 ¥Ð¥¤¥È -(Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃÍ¤Ï -.I /proc/sys/kernel/msgmax -·Ðͳ¤ÇÆɤ߽Ф·¤¿¤êÊѹ¹¤·¤¿¤ê¤Ç¤­¤ë)¡£ -.TP -.B MSGMNB -.\"O Default maximum size in bytes of a message queue: 16384 bytes -.\"O (on Linux, this limit can be read and modified via -.\"O .IR /proc/sys/kernel/msgmnb ). -.\"O The superuser can increase the size of a message queue beyond -.\"O .B MSGMNB -.\"O by a -.\"O .BR msgctl (2) -.\"O system call. -¥Ð¥¤¥Èñ°Ì¤Ç¤Î¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥Ç¥Õ¥©¥ë¥È¤ÎºÇÂ祵¥¤¥º : 16384 ¥Ð¥¤¥È¡£ -(Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃÍ¤Ï -.I /proc/sys/kernel/msgmnb -·Ðͳ¤ÇÆɤ߽Ф·¤¿¤êÊѹ¹¤·¤¿¤ê¤Ç¤­¤ë)¡£ -¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¡¼¤Ï -.BR msgctl (2) -¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ç¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥µ¥¤¥º¤ò -.B MSGMNB -¤è¤ê¤âÂ礭¤¤ÃͤËÁý¤ä¤¹¤³¤È¤¬¤Ç¤­¤ë¡£ +\fImsgp\fP 引き数は、 libc4, libc5, glibc 2.0, glibc 2.1 では \fIstruct msgbuf *\fP +と宣言されている。glibc 2.2 以降では、 SUSv2 と SUSv3 の要求通り、\fIvoid *\fP と宣言されている。 + +以下は \fBmsgsnd\fP システムコールに影響するシステム制限である: +.TP +\fBMSGMAX\fP +メッセージのテキストの最大サイズ: 8192 バイト (Linux では、この制限値は \fI/proc/sys/kernel/msgmax\fP +経由で読み出したり変更したりできる)。 +.TP +\fBMSGMNB\fP +バイト単位でのメッセージ・キューのデフォルトの最大サイズ : 16384 バイト。 (Linux では、この制限値は +\fI/proc/sys/kernel/msgmnb\fP 経由で読み出したり変更したりできる)。 スーパーユーザーは \fBmsgctl\fP(2) +システムコールでメッセージ・キューのサイズを \fBMSGMNB\fP よりも大きい値に増やすことができる。 .PP -.\"O The implementation has no intrinsic limits for the system wide maximum -.\"O number of message headers -.\"O .RB ( MSGTQL ) -.\"O and for the system wide maximum size in bytes of the message pool -.\"O .RB ( MSGPOOL ). -¸½ºß¤Î¼ÂÁõ¤Ç¤Ï¡¢¥·¥¹¥Æ¥àÁ´ÂΤΥá¥Ã¥»¡¼¥¸¡¦¥Ø¥Ã¥À¡¼¤ÎºÇÂç¿ô -.RB ( MSGTQL ) -¤È¡¢¥·¥¹¥Æ¥àÁ´ÂΤΥá¥Ã¥»¡¼¥¸¡¦¥×¡¼¥ë¤ÎºÇÂç¥Ð¥¤¥È¿ô -.RB ( MSGPOOL ) -¤Ë´Ø¤·¤Æ¼ÂÁõ°Í¸¤ÎÀ©¸Â¤Ï¤Ê¤¤¡£ -.\"O .SH "SEE ALSO" -.SH ´ØÏ¢¹àÌÜ -.BR msgctl (2), -.BR msgget (2), -.BR capabilities (7), -.BR mq_overview (7), -.BR svipc (7) +現在の実装では、システム全体のメッセージ・ヘッダーの最大数 (\fBMSGTQL\fP) と、システム全体のメッセージ・プールの最大バイト数 +(\fBMSGPOOL\fP) に関して実装依存の制限はない。 +.SH 関連項目 +\fBmsgctl\fP(2), \fBmsgget\fP(2), \fBcapabilities\fP(7), \fBmq_overview\fP(7), +\fBsvipc\fP(7) +.SH この文書について +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部 +である。プロジェクトの説明とバグ報告に関する情報は +http://www.kernel.org/doc/man\-pages/ に書かれている。