X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=release%2Fman2%2Fmsgctl.2;h=d6d1d552ad9acf3522b8f450c649ed4d547f2dc9;hb=4fa3e54b837e5814a4598ec901d77446bf5cb9b3;hp=70c5d6e7fa000bca9a9e0a053a34e28192b207b3;hpb=7e089fcc022461849bbc09437103cc337a88dd9c;p=linuxjm%2FLDP_man-pages.git diff --git a/release/man2/msgctl.2 b/release/man2/msgctl.2 index 70c5d6e7..d6d1d552 100644 --- a/release/man2/msgctl.2 +++ b/release/man2/msgctl.2 @@ -32,322 +32,165 @@ .\" Added msqid_ds and ipc_perm structure definitions .\" 2005-08-02, mtk: Added IPC_INFO, MSG_INFO, MSG_STAT descriptions .\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Updated & Modified 2001-06-04, Yuichi SATO -.\" Updated & Modified 2002-07-06, Yuichi SATO -.\" Updated & Modified 2004-12-31, Yuichi SATO -.\" Updated & Modified 2005-10-10, Akihiro MOTOKI +.\"******************************************************************* .\" -.\"WORD: message ¥á¥Ã¥»¡¼¥¸ -.\"WORD: queue ¥­¥å¡¼ -.\"WORD: member ¥á¥ó¥Ð¡¼ -.\"WORD: structure ¹½Â¤ÂÎ -.\"WORD: effective user ID ¼Â¸ú¥æ¡¼¥¶ ID -.\"WORD: creator ºîÀ®¼Ô -.\"WORD: owner ½êÍ­¼Ô -.\"WORD: feature test macro µ¡Ç½¸¡ºº¥Þ¥¯¥í +.\" This file was generated with po4a. Translate the source file. .\" -.TH MSGCTL 2 2008-08-06 "Linux" "Linux Programmer's Manual" -.SH ̾Á° -msgctl \- ¥á¥Ã¥»¡¼¥¸À©¸æÁàºî -.SH ½ñ¼° +.\"******************************************************************* +.TH MSGCTL 2 2008\-08\-06 Linux "Linux Programmer's Manual" +.SH 名前 +msgctl \- メッセージ制御操作 +.SH 書式 .nf -.B #include -.B #include -.B #include +\fB#include \fP +\fB#include \fP +\fB#include \fP -.BI "int msgctl(int " msqid ", int " cmd ", struct msqid_ds *" buf ); +\fBint msgctl(int \fP\fImsqid\fP\fB, int \fP\fIcmd\fP\fB, struct msqid_ds *\fP\fIbuf\fP\fB);\fP .fi -.SH ÀâÌÀ -.BR msgctl () -¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¼±ÊÌ»Ò -.I msqid -¤Ç»ØÄꤵ¤ì¤¿¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼ (message queue) ¤ËÂФ·¤Æ -.I cmd -¤Ç»ØÄꤵ¤ì¤¿À©¸æÁàºî¤ò¹Ô¤Ê¤¦¡£ +.SH 説明 +\fBmsgctl\fP() はメッセージ・キュー識別子 \fImsqid\fP で指定されたメッセージ・キュー (message queue) に対して +\fIcmd\fP で指定された制御操作を行なう。 .PP -.I msqid_ds -¥Ç¡¼¥¿¹½Â¤ÂÎ¤Ï \fI\fP ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë: +\fImsqid_ds\fP データ構造体は \fI\fP で以下のように定義されている: .nf .in +4n struct msqid_ds { - struct ipc_perm msg_perm; /* ½êÍ­¸¢¤Èµö²Ä */ - time_t msg_stime; /* ºÇ¸å¤Î msgsnd(2) ¤Î»þ¹ï */ - time_t msg_rtime; /* ºÇ¸å¤Î msgrcv(2) ¤Î»þ¹ï */ - time_t msg_ctime; /* ºÇ¸å¤ËÊѹ¹¤¬¹Ô¤ï¤ì¤¿»þ¹ï */ - unsigned long __msg_cbytes; /* ¥­¥å¡¼¤Ë¤¢¤ë¸½ºß¤Î¥Ð¥¤¥È¿ô - (Èóɸ½à) */ - msgqnum_t msg_qnum; /* ¥­¥å¡¼¤Ë¤¢¤ë¸½ºßÆþ¤Ã¤Æ¤¤¤ë - ¥á¥Ã¥»¡¼¥¸¤Î¿ô */ - msglen_t msg_qbytes; /* ¥­¥å¡¼¤Ëµö²Ä¤µ¤ì¤Æ¤¤¤ë - ºÇÂç¥Ð¥¤¥È¿ô */ - pid_t msg_lspid; /* ºÇ¸å¤Î msgsnd(2) ¤Î PID */ - pid_t msg_lrpid; /* ºÇ¸å¤Î msgrcv(2) ¤Î PID */ + struct ipc_perm msg_perm; /* 所有権と許可 */ + time_t msg_stime; /* 最後の msgsnd(2) の時刻 */ + time_t msg_rtime; /* 最後の msgrcv(2) の時刻 */ + time_t msg_ctime; /* 最後に変更が行われた時刻 */ + unsigned long __msg_cbytes; /* キューにある現在のバイト数 + (非標準) */ + msgqnum_t msg_qnum; /* キューにある現在入っている + メッセージの数 */ + msglen_t msg_qbytes; /* キューに許可されている + 最大バイト数 */ + pid_t msg_lspid; /* 最後の msgsnd(2) の PID */ + pid_t msg_lrpid; /* 最後の msgrcv(2) の PID */ }; .in .fi .PP -.I ipc_perm -¹½Â¤ÂÎ¤Ï \fI\fP ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë -(¶¯Ä´¤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É¤Ï -.B IPC_SET -¤ò»È¤Ã¤ÆÀßÄê²Äǽ¤Ç¤¢¤ë): +\fIipc_perm\fP 構造体は \fI\fP で以下のように定義されている (強調されたフィールドは +\fBIPC_SET\fP を使って設定可能である): .PP .nf .in +4n struct ipc_perm { - key_t __key; /* msgget(2) ¤ËÍ¿¤¨¤ë¥­¡¼ */ - uid_t \fBuid\fP; /* ½êÍ­¼Ô¤Î¼Â¸ú UID */ - gid_t \fBgid\fP; /* ½êÍ­¼Ô¤Î¼Â¸ú GID */ - uid_t cuid; /* ºîÀ®¼Ô¤Î¼Â¸ú UID */ - gid_t cgid; /* ºîÀ®¼Ô¤Î¼Â¸ú GID */ - unsigned short \fBmode\fP; /* µö²Ä */ - unsigned short __seq; /* ¥·¡¼¥±¥ó¥¹ÈÖ¹æ */ + key_t __key; /* msgget(2) に与えるキー */ + uid_t \fBuid\fP; /* 所有者の実効 UID */ + gid_t \fBgid\fP; /* 所有者の実効 GID */ + uid_t cuid; /* 作成者の実効 UID */ + gid_t cgid; /* 作成者の実効 GID */ + unsigned short \fBmode\fP; /* 許可 */ + unsigned short __seq; /* シーケンス番号 */ }; .in .fi .PP -.I cmd -¤È¤·¤ÆÍ­¸ú¤ÊÃͤÏ: -.TP -.B IPC_STAT -.I msqid -¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¡¦¥Ç¡¼¥¿¹½Â¤ÂΤ«¤é¡¢¥Ý¥¤¥ó¥¿ -.I buf -¤¬»Ø¤·¼¨¤¹ -.I msqid_ds -¹½Â¤ÂΤ˾ðÊó¤ò¥³¥Ô¡¼¤¹¤ë¡£ -¸Æ¤Ó½Ð¤·Â¦¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÂФ¹¤ëÆɤ߹þ¤ßµö²Ä¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ -.TP -.B IPC_SET -¥Ý¥¤¥ó¥¿ -.I buf -¤¬»Ø¤·¼¨¤¹ -.I msqid_ds -¹½Â¤ÂΤΥá¥ó¥Ð¡¼¤ÎÃͤò¡¢¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿ -¥«¡¼¥Í¥ë¡¦¥Ç¡¼¥¿¹½Â¤ÂΤ˽ñ¤­¹þ¤ß¡¢ -.I msg_ctime -¥á¥ó¥Ð¡¼¤â¹¹¿·¤¹¤ë¡£ -¹½Â¤ÂΤΥá¥ó¥Ð¡¼¤Î¤¦¤Á¡¢¹¹¿·¤µ¤ì¤ë¤â¤Î¤ò°Ê²¼¤Ë¼¨¤¹: -.IR msg_qbytes , -.IR msg_perm.uid , -.IR msg_perm.gid , -.I msg_perm.mode -(¤Î²¼°Ì 9 ¥Ó¥Ã¥È)¡£ -¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤¬¡¢¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î½êÍ­¼Ô -.RI ( msg_perm.uid ) -¤Þ¤¿¤ÏºîÀ®¼Ô -.RI ( msg_perm.cuid ) -¤È°ìÃפ¹¤ë¤«¡¢¸Æ¤Ó½Ð¤·¸µ¤¬Æø¢¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ -.I msg_qbytes -¤ò¥·¥¹¥Æ¥à¡¦¥Ñ¥é¥á¡¼¥¿¤Î -.B MSGMNB -¤òĶ¤¨¤ÆÀßÄꤹ¤ë¤Ë¤Ï¡¢Å¬ÀÚ¤ÊÆø¢ (Linux ¤Ç¤Ï -.B CAP_IPC_RESOURCE -¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£ (capability)) ¤¬É¬ÍפǤ¢¤ë¡£ -.TP -.B IPC_RMID -¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ò¤¿¤À¤Á¤Ëºï½ü¤¹¤ë¡£ -Ʊ»þ¤Ë¤½¤Î¹½Â¤ÂΤÎÆɤ߽ñ¤­¤ÎÂÔ¤Á¾õÂ֤ˤ¢¤Ã¤¿¥×¥í¥»¥¹¤ËÄÌÃΤ¹¤ë -(¥¨¥é¡¼¤¬Ê֤ꡢ -.I errno -¤¬ -.B EIDRM -¤ËÀßÄꤵ¤ì¤ë)¡£ -¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬Å¬ÀÚ¤ÊÆø¢¤ò»ý¤Ã¤Æ¤¤¤ë¤«¡¢ -¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤¬¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ÎºîÀ®¼Ô¤« -½êÍ­¼Ô¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ -.TP -.BR IPC_INFO " (Linux ¸ÇÍ­)" -¥·¥¹¥Æ¥àÁ´ÂΤǤΥá¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ÎÀ©¸Â¤È¥Ñ¥é¥á¡¼¥¿¤Ë´Ø¤¹¤ë¾ðÊó¤ò¡¢ -.I buf -¤¬»Ø¤¹¹½Â¤ÂΤËÆþ¤ì¤ÆÊÖ¤¹¡£ -¤³¤Î¹½Â¤ÂÎ¤Ï -.I msginfo -·¿¤Ç¤¢¤ë (¤½¤Î¤¿¤á¥­¥ã¥¹¥È¤¬É¬ÍפǤ¢¤ë)¡£ -.I msginfo -¤Ï -.B _GNU_SOURCE -µ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤¿¾ì¹ç¤Ë -.I -¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤ë: +\fIcmd\fP として有効な値は: +.TP +\fBIPC_STAT\fP +\fImsqid\fP に関連づけられたメッセージ・キュー・データ構造体から、ポインタ \fIbuf\fP が指し示す \fImsqid_ds\fP +構造体に情報をコピーする。 呼び出し側はメッセージ・キューに対する読み込み許可を持っていなければならない。 +.TP +\fBIPC_SET\fP +ポインタ \fIbuf\fP が指し示す \fImsqid_ds\fP 構造体のメンバーの値を、メッセージ・キューに関連づけられた +カーネル・データ構造体に書き込み、 \fImsg_ctime\fP メンバーも更新する。 構造体のメンバーのうち、更新されるものを以下に示す: +\fImsg_qbytes\fP, \fImsg_perm.uid\fP, \fImsg_perm.gid\fP, \fImsg_perm.mode\fP (の下位 9 +ビット)。 呼び出したプロセスの実効ユーザ ID が、メッセージ・キューの所有者 (\fImsg_perm.uid\fP) または作成者 +(\fImsg_perm.cuid\fP) と一致するか、呼び出し元が特権を持たなければならない。 \fImsg_qbytes\fP をシステム・パラメータの +\fBMSGMNB\fP を超えて設定するには、適切な特権 (Linux では \fBCAP_IPC_RESOURCE\fP ケーパビリティ +(capability)) が必要である。 +.TP +\fBIPC_RMID\fP +メッセージ・キューをただちに削除する。 同時にその構造体の読み書きの待ち状態にあったプロセスに通知する (エラーが返り、 \fIerrno\fP が +\fBEIDRM\fP に設定される)。 呼び出したプロセスが適切な特権を持っているか、 呼び出したプロセスの実効ユーザ ID がメッセージ・キューの作成者か +所有者の実効ユーザ ID でなければならない。 +.TP +\fBIPC_INFO\fP (Linux 固有) +システム全体でのメッセージ・キューの制限とパラメータに関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fImsginfo\fP +型である (そのためキャストが必要である)。 \fImsginfo\fP は \fB_GNU_SOURCE\fP 機能検査マクロが定義された場合に +\fI\fP で以下のように定義される: .nf .in +4n struct msginfo { - int msgpool; /* ¥á¥Ã¥»¡¼¥¸¡¦¥Ç¡¼¥¿¤ÎÊÝ»ý¤Ë»ÈÍѤµ¤ì¤ë - ¥Ð¥Ã¥Õ¥¡¡¦¥×¡¼¥ë¤ÎÂ礭¤µ (1024 ¥Ð¥¤¥Èñ°Ì); - ¥«¡¼¥Í¥ëÆâ¤Ç¤Ï̤»ÈÍÑ */ - int msgmap; /* ¥á¥Ã¥»¡¼¥¸¡¦¥Þ¥Ã¥×¤ÎºÇÂ票¥ó¥È¥ê¿ô; - ¥«¡¼¥Í¥ëÆâ¤Ç¤Ï̤»ÈÍÑ */ - int msgmax; /* °ì¤Ä¤Î¥á¥Ã¥»¡¼¥¸¤Ë½ñ¤­¹þ¤ß²Äǽ¤Ê - ºÇÂç¥Ð¥¤¥È¿ô */ - int msgmnb; /* °ì¤Ä¤Î¥­¥å¡¼¤Ë½ñ¤­¹þ¤ß²Äǽ¤ÊºÇÂç¥Ð¥¤¥È¿ô; - (msgget(2) ¤Ç¤Î) ¥­¥å¡¼ºîÀ®Ãæ¤Î msg_qbytes - ¤Î½é´ü²½¤Ë»ÈÍѤµ¤ì¤ë */ - int msgmni; /* ¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¿ô¤ÎºÇÂçÃÍ */ - int msgssz; /* ¥á¥Ã¥»¡¼¥¸¡¦¥»¥°¥á¥ó¥È¤Î¥µ¥¤¥º; - ¥«¡¼¥Í¥ëÆâ¤Ç¤Ï̤»ÈÍÑ */ - int msgtql; /* ¥·¥¹¥Æ¥à¾å¤ÎÁ´¥­¥å¡¼¤ÎºÇÂç¥á¥Ã¥»¡¼¥¸¿ô; - ¥«¡¼¥Í¥ëÆâ¤Ç¤Ï̤»ÈÍÑ */ + int msgpool; /* メッセージ・データの保持に使用される + バッファ・プールの大きさ (1024 バイト単位); + カーネル内では未使用 */ + int msgmap; /* メッセージ・マップの最大エントリ数; + カーネル内では未使用 */ + int msgmax; /* 一つのメッセージに書き込み可能な + 最大バイト数 */ + int msgmnb; /* 一つのキューに書き込み可能な最大バイト数; + (msgget(2) での) キュー作成中の msg_qbytes + の初期化に使用される */ + int msgmni; /* メッセージ・キューの数の最大値 */ + int msgssz; /* メッセージ・セグメントのサイズ; + カーネル内では未使用 */ + int msgtql; /* システム上の全キューの最大メッセージ数; + カーネル内では未使用 */ unsigned short int msgseg; - /* ºÇÂ祻¥°¥á¥ó¥È¿ô; ¥«¡¼¥Í¥ëÆâ¤Ç¤Ï̤»ÈÍÑ */ + /* 最大セグメント数; カーネル内では未使用 */ }; .in .fi -ÀßÄê -.I msgmni , -.I msgmax , -.I msgmnb -¤Ï -.I /proc -¤Ë¤¢¤ëƱ¤¸Ì¾Á°¤Î¥Õ¥¡¥¤¥ë·Ðͳ¤ÇÊѹ¹²Äǽ¤Ç¤¢¤ë¡£ -¾Ü¤·¤¯¤Ï -.BR proc (5) -¤ò»²¾È¡£ -.TP -.BR MSG_INFO " (Linux ¸ÇÍ­)" -.B IPC_INFO -¤Î¤È¤­¤ÈƱ¤¸¾ðÊó¤ò³ÊǼ¤·¤¿ -.I msginfo -¹½Â¤ÂΤòÊÖ¤¹¡£ -⤷¡¢°Ê²¼¤Î¥Õ¥£¡¼¥ë¥É¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬ -¾ÃÈñ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à»ñ¸»¤Ë´Ø¤¹¤ë¾ðÊ󤬳ÊǼ¤µ¤ì¤ëÅÀ¤¬°Û¤Ê¤ë¡£ -.I msgpool -¥Õ¥£¡¼¥ë¥É¤Ï¸½ºß¥·¥¹¥Æ¥à¾å¤Ë¸ºß¤¹¤ë¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¿ô¤òÊÖ¤¹¡£ -.I msgmap -¥Õ¥£¡¼¥ë¥É¤Ï¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¥­¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ë¥á¥Ã¥»¡¼¥¸Áí¿ô¤òÊÖ¤¹¡£ -.I msgtql -¥Õ¥£¡¼¥ë¥É¤Ï¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¥­¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ëÁ´¥á¥Ã¥»¡¼¥¸¤Î -Áí¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£ -.TP -.BR MSG_STAT " (Linux ¸ÇÍ­)" -.B IPC_STAT -¤ÈƱ¤¸¤¯ -.I msqid_ds -¹½Â¤ÂΤòÊÖ¤¹¡£ -⤷¡¢ -.I msqid -°ú¤­¿ô¤Ï¡¢¥­¥å¡¼¼±Ê̻ҤǤϤʤ¯¡¢¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼ -¤Ë´Ø¤¹¤ë¾ðÊó¤ò´ÉÍý¤¹¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Ø¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤¢¤ë¡£ -.SH ÊÖ¤êÃÍ -À®¸ù¤¹¤ë¤È¡¢ -.BR IPC_STAT , -.BR IPC_SET , -.B IPC_RMID -¤Ï 0 ¤òÊÖ¤¹¡£ -.B IPC_INFO -¤È -.B MSG_INFO -Áàºî¤Ï¡¢À®¸ù¤¹¤ë¤È¡¢Á´¤Æ¤Î¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Ë´Ø¤¹¤ë¾ðÊó¤ò -´ÉÍý¤·¤Æ¤¤¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Î»ÈÍÑÃ楨¥ó¥È¥ê¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î -¤¦¤ÁºÇÂçÃͤòÊÖ¤¹ -(¤³¤Î¾ðÊó¤Ï¡¢¥·¥¹¥Æ¥à¤ÎÁ´¤Æ¤Î¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Ë´Ø¤¹¤ë¾ðÊó¤ò -¼èÆÀ¤¹¤ë¤¿¤á¤Ë¡¢ -.B MSG_STAT -Áàºî¤ò·«¤êÊÖ¤·¼Â¹Ô¤¹¤ëºÝ¤Ë»ÈÍѤǤ­¤ë)¡£ -.B MSG_STAT -Áàºî¤Ï¡¢À®¸ù¤¹¤ë¤È¡¢ -.I msqid -¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ý¤Ä¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¼±Ê̻ҤòÊÖ¤¹¡£ +設定 \fImsgmni ,\fP \fImsgmax ,\fP \fImsgmnb\fP は \fI/proc\fP にある同じ名前のファイル経由で変更可能である。 詳しくは +\fBproc\fP(5) を参照。 +.TP +\fBMSG_INFO\fP (Linux 固有) +\fBIPC_INFO\fP のときと同じ情報を格納した \fImsginfo\fP 構造体を返す。 但し、以下のフィールドにはメッセージ・キューが +消費しているシステム資源に関する情報が格納される点が異なる。 \fImsgpool\fP フィールドは現在システム上に存在するメッセージ・キューの数を返す。 +\fImsgmap\fP フィールドはシステム上の全てのキューに入っているメッセージ総数を返す。 \fImsgtql\fP +フィールドはシステム上の全てのキューに入っている全メッセージの 総バイト数を返す。 +.TP +\fBMSG_STAT\fP (Linux 固有) +\fBIPC_STAT\fP と同じく \fImsqid_ds\fP 構造体を返す。 但し、 \fImsqid\fP +引き数は、キュー識別子ではなく、システム上の全てのメッセージ・キュー に関する情報を管理するカーネルの内部配列へのインデックスである。 +.SH 返り値 +成功すると、 \fBIPC_STAT\fP, \fBIPC_SET\fP, \fBIPC_RMID\fP は 0 を返す。 \fBIPC_INFO\fP と +\fBMSG_INFO\fP 操作は、成功すると、全てのメッセージ・キューに関する情報を 管理しているカーネルの内部配列の使用中エントリのインデックスの +うち最大値を返す (この情報は、システムの全てのメッセージ・キューに関する情報を 取得するために、 \fBMSG_STAT\fP +操作を繰り返し実行する際に使用できる)。 \fBMSG_STAT\fP 操作は、成功すると、 \fImsqid\fP +で指定されたインデックスを持つメッセージ・キューの識別子を返す。 -¥¨¥é¡¼¤Î¾ì¹ç¤Ï \-1 ¤òÊÖ¤·¡¢ -.I errno -¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£ -.SH ¥¨¥é¡¼ -¼ºÇÔ¤·¤¿¾ì¹ç¡¢ -.I errno -¤Ï°Ê²¼¤ÎÃͤÎÃæ¤Î¤É¤ì¤«°ì¤Ä¤ËÀßÄꤵ¤ì¤ë: -.TP -.B EACCES -°ú¤­¿ô -.I cmd -¤¬ -.B IPC_STAT -¤Þ¤¿¤Ï -.B MSG_STAT -¤ËÅù¤·¤¤¤¬¡¢¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼ -.I msqid -¤ËÂФ¹¤ëÆɤ߹þ¤ßµö²Ä¤ò»ý¤Ã¤Æ¤ª¤é¤º¡¢¤«¤Ä -.B CAP_IPC_OWNER -¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ -.TP -.B EFAULT -°ú¤­¿ô -.I cmd -¤¬ -.B IPC_SET -¤« -.B IPC_STAT -¤Ç¡¢¥Ý¥¤¥ó¥¿ -.I buf -¤Ç»Ø¤µ¤ì¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤¬¥¢¥¯¥»¥¹²Äǽ¤Ç¤Ê¤¤¡£ -.TP -.B EIDRM -¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¡£ -.TP -.B EINVAL -.I cmd -¤Þ¤¿¤Ï -.I msqid -¤ËÉÔÀµ¤ÊÃͤ¬ÀßÄꤵ¤ì¤¿¡£ -¤â¤·¤¯¤Ï¡¢ -.B MSG_STAT -Áàºî¤Î¾ì¹ç¤Ë¡¢ -.I msqid -¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹Ãͤ¬¸½ºß̤»ÈÍѤÎÇÛÎó¤Î¥¹¥í¥Ã¥È¤ò»²¾È¤¤¤Æ¤¤¤¿¡£ -.TP -.B EPERM -°ú¤­¿ô -.I cmd -¤¬ -.B IPC_SET -¤« -.B IPC_RMID -¤Ç¤¢¤ë¤¬¡¢¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤¬¥á¥Ã¥»¡¼¥¸¥­¥å¡¼¤Î -.RI ( msg_perm.cuid -¤È¤·¤Æ¸«¤Ä¤«¤ë) ºîÀ®¼Ô -¤È -.RI ( msg_perm.uid -¤È¤·¤Æ¸«¤Ä¤«¤ë) ½êÍ­¼Ô¤Î¤¤¤º¤ì¤Ç¤â¤Ê¤¯¡¢ -¤«¤Ä¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤ËÆø¢ (Linux ¤Ç¤Ï -.B CAP_SYS_ADMIN -¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£) ¤¬¤Ê¤¤¡£ -.SH ½àµò -SVr4, POSIX.1-2001. -.\" SVID ¤Ë¤Ï EIDRM ¥¨¥é¡¼¤Ë¤Ä¤¤¤Æ¤Îµ­½Ò¤Ï¤Ê¤¤¡£ -.SH Ãí°Õ -.BR IPC_INFO , -.BR MSG_STAT , -.B MSG_INFO -Áàºî¤Ï¡¢ -.BR ipcs (1) -¥×¥í¥°¥é¥à¤Ç³ä¤êÅö¤ÆºÑ¤Î»ñ¸»¤Ë´Ø¤¹¤ë¾ðÊó¤òÄ󶡤¹¤ë¤¿¤á¤Ë -»ÈÍѤµ¤ì¤Æ¤¤¤ë¡£¾­Íè¡¢¤³¤ì¤é¤ÎÁàºî¤ÏÊѹ¹¤µ¤ì¤¿¤ê¡¢ -/proc ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë°ÜÆ°¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ +エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。 +.SH エラー +失敗した場合、 \fIerrno\fP は以下の値の中のどれか一つに設定される: +.TP +\fBEACCES\fP +引き数 \fIcmd\fP が \fBIPC_STAT\fP または \fBMSG_STAT\fP に等しいが、呼び出したプロセスがメッセージ・キュー \fImsqid\fP +に対する読み込み許可を持っておらず、かつ \fBCAP_IPC_OWNER\fP ケーパビリティを持っていない。 +.TP +\fBEFAULT\fP +引き数 \fIcmd\fP が \fBIPC_SET\fP か \fBIPC_STAT\fP で、ポインタ \fIbuf\fP で指されているアドレスがアクセス可能でない。 +.TP +\fBEIDRM\fP +メッセージ・キューが削除された。 +.TP +\fBEINVAL\fP +\fIcmd\fP または \fImsqid\fP に不正な値が設定された。 もしくは、 \fBMSG_STAT\fP 操作の場合に、 \fImsqid\fP +で指定されたインデックス値が現在未使用の配列のスロットを参照いていた。 +.TP +\fBEPERM\fP +引き数 \fIcmd\fP が \fBIPC_SET\fP か \fBIPC_RMID\fP であるが、呼び出したプロセスの実効ユーザ ID がメッセージキューの +(\fImsg_perm.cuid\fP として見つかる) 作成者 と (\fImsg_perm.uid\fP として見つかる) 所有者のいずれでもなく、 +かつ呼び出したプロセスに特権 (Linux では \fBCAP_SYS_ADMIN\fP ケーパビリティ) がない。 +.SH 準拠 +.\" SVID does not document the EIDRM error condition. +SVr4, POSIX.1\-2001. +.SH 注意 +\fBIPC_INFO\fP, \fBMSG_STAT\fP, \fBMSG_INFO\fP 操作は、 \fBipcs\fP(1) +プログラムで割り当て済の資源に関する情報を提供するために 使用されている。将来、これらの操作は変更されたり、 /proc +ファイルシステムのインタフェースに移動されるかもしれない。 - -\fIstruct msqid_ds\fP Æâ¤Î¿¤¯¤Î¥Õ¥£¡¼¥ë¥É¤Ï¡¢ -Linux 2.2 ¤Ç¤Ï -.I short -¤À¤Ã¤¿¤¬¡¢Linux 2.4 ¤Ç¤Ï -.I long -¤Ë¤Ê¤Ã¤¿¡£ -¤³¤ÎÍøÅÀ¤òÀ¸¤«¤¹¤Ë¤Ï¡¢glibc-2.1.91 °Ê¹ß¤Î´Ä¶­²¼¤Ç -ºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ì¤Ð½½Ê¬¤Ç¤¢¤ë¡£ -(¥«¡¼¥Í¥ë¤Ï¿·¤·¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤È¸Å¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤ò -.I cmd -Æâ¤Î -.B IPC_64 -¥Õ¥é¥°¤Ç¶èÊ̤¹¤ë¡£) -.SH ´ØÏ¢¹àÌÜ -.BR msgget (2), -.BR msgrcv (2), -.BR msgsnd (2), -.BR capabilities (7), -.BR mq_overview (7), -.BR svipc (7) +\fIstruct msqid_ds\fP 内の多くのフィールドは、 Linux 2.2 では \fIshort\fP だったが、Linux 2.4 では +\fIlong\fP になった。 この利点を生かすには、glibc\-2.1.91 以降の環境下で 再コンパイルすれば十分である。 +(カーネルは新しい形式の呼び出しと古い形式の呼び出しを \fIcmd\fP 内の \fBIPC_64\fP フラグで区別する。) +.SH 関連項目 +\fBmsgget\fP(2), \fBmsgrcv\fP(2), \fBmsgsnd\fP(2), \fBcapabilities\fP(7), +\fBmq_overview\fP(7), \fBsvipc\fP(7)