\fBint msgctl(int \fP\fImsqid\fP\fB, int \fP\fIcmd\fP\fB, struct msqid_ds *\fP\fIbuf\fP\fB);\fP
.fi
.SH 説明
-\fBmsgctl\fP() ã\81¯ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼è\98å\88¥å\90 \fImsqid\fP ã\81§æ\8c\87å®\9aã\81\95ã\82\8cã\81\9f System\ V ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ (message
-queue) に対して \fIcmd\fP で指定された制御操作を行なう。
+\fBmsgctl\fP() ã\81¯ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82ã\83¥ã\83¼è\98å\88¥å\90 \fImsqid\fP ã\81§æ\8c\87å®\9aã\81\95ã\82\8cã\81\9f System\ V ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82ã\83¥ã\83¼ (message queue)
+に対して \fIcmd\fP で指定された制御操作を行なう。
.PP
\fImsqid_ds\fP データ構造体は \fI<sys/msg.h>\fP で以下のように定義されている:
.nf
\fIcmd\fP として有効な値は:
.TP
\fBIPC_STAT\fP
-\fImsqid\fP ã\81«é\96¢é\80£ã\81¥ã\81\91ã\82\89ã\82\8cã\81\9fã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\83»データ構造体から、ポインタ \fIbuf\fP が指し示す \fImsqid_ds\fP
+\fImsqid\fP ã\81«é\96¢é\80£ã\81¥ã\81\91ã\82\89ã\82\8cã\81\9fã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82ã\83¥ã\83¼データ構造体から、ポインタ \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
-ã\83\93ã\83\83ã\83\88)ã\80\82 å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83ã\82»ã\82¹ã\81®å®\9få\8a¹ã\83¦ã\83¼ã\82¶ ID ã\81\8cã\80\81ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\81®æ\89\80æ\9c\89è\80\85 (\fImsg_perm.uid\fP) ã\81¾ã\81\9fã\81¯ä½\9cæ\88\90è\80\85
+ビット)。 呼び出したプロセスの実効ユーザ ID が、メッセージキューの所有者 (\fImsg_perm.uid\fP) または作成者
(\fImsg_perm.cuid\fP) と一致するか、呼び出し元が特権を持たなければならない。 \fImsg_qbytes\fP をシステム・パラメータの
\fBMSGMNB\fP を超えて設定するには、適切な特権 (Linux では \fBCAP_SYS_RESOURCE\fP ケーパビリティ
(capability)) が必要である。
.TP
\fBIPC_RMID\fP
-ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\82\92ã\81\9fã\81 ã\81¡ã\81«å\89\8aé\99¤ã\81\99ã\82\8bã\80\82 å\90\8cæ\99\82ã\81«ã\81\9dã\81®æ§\8bé\80 ä½\93ã\81®èªã\81¿æ\9b¸ã\81\8dã\81®å¾\85ã\81¡ç\8a¶æ\85\8bã\81«ã\81\82ã\81£ã\81\9fã\83\97ã\83ã\82»ã\82¹ã\81«é\80\9aç\9f¥ã\81\99ã\82\8b (ã\82¨ã\83©ã\83¼ã\81\8cè¿\94ã\82\8aã\80\81 \fIerrno\fP ã\81\8c
-\fBEIDRM\fP ã\81«è¨å®\9aã\81\95ã\82\8cã\82\8b)ã\80\82 å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83ã\82»ã\82¹ã\81\8cé\81©å\88\87ã\81ªç\89¹æ¨©ã\82\92æ\8c\81ã\81£ã\81¦ã\81\84ã\82\8bã\81\8bã\80\81 å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83ã\82»ã\82¹ã\81®å®\9få\8a¹ã\83¦ã\83¼ã\82¶ ID ã\81\8cã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\81®ä½\9cæ\88\90è\80\85ã\81\8b
+メッセージキューをただちに削除する。 同時にその構造体の読み書きの待ち状態にあったプロセスに通知する (エラーが返り、 \fIerrno\fP が
+\fBEIDRM\fP に設定される)。 呼び出したプロセスが適切な特権を持っているか、 呼び出したプロセスの実効ユーザ ID がメッセージキューの作成者か
所有者の実効ユーザ ID でなければならない。この場合、 \fBmsgctl\fP() の第 3 引き数は無視される。
.TP
\fBIPC_INFO\fP (Linux 固有)
-ã\82·ã\82¹ã\83\86ã\83 å\85¨ä½\93ã\81§ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\81®å\88¶é\99\90ã\81¨ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81«é\96¢ã\81\99ã\82\8bæ\83\85å ±ã\82\92ã\80\81 \fIbuf\fP ã\81\8cæ\8c\87ã\81\99æ§\8bé\80 ä½\93ã\81«å\85¥ã\82\8cã\81¦è¿\94ã\81\99ã\80\82 ã\81\93ã\81®æ§\8bé\80 ä½\93ã\81¯ \fImsginfo\fP
+システム全体でのメッセージキューの制限とパラメータに関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fImsginfo\fP
型である (そのためキャストが必要である)。 \fImsginfo\fP は \fB_GNU_SOURCE\fP 機能検査マクロが定義された場合に
\fI<sys/msg.h>\fP で以下のように定義される:
.nf
int msgmnb; /* 一つのキューに書き込み可能な最大バイト数;
(msgget(2) での) キュー作成中の msg_qbytes
の初期化に使用される */
- int msgmni; /* ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\81®æ\95°ã\81®æ\9c\80大å\80¤ */
+ int msgmni; /* メッセージキューの数の最大値 */
int msgssz; /* メッセージ・セグメントのサイズ;
カーネル内では未使用 */
int msgtql; /* システム上の全キューの最大メッセージ数;
\fBproc\fP(5) を参照。
.TP
\fBMSG_INFO\fP (Linux 固有)
-\fBIPC_INFO\fP ã\81®ã\81¨ã\81\8dã\81¨å\90\8cã\81\98æ\83\85å ±ã\82\92æ ¼ç´\8dã\81\97ã\81\9f \fImsginfo\fP æ§\8bé\80 ä½\93ã\82\92è¿\94ã\81\99ã\80\82 ä½\86ã\81\97ã\80\81以ä¸\8bã\81®ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81«ã\81¯ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\81\8c
+\fBIPC_INFO\fP のときと同じ情報を格納した \fImsginfo\fP 構造体を返す。 但し、以下のフィールドにはメッセージキューが
消費しているシステム資源に関する情報が格納される点が異なる。 \fImsgpool\fP フィールドは現在システム上に存在するメッセージ・キューの数を返す。
\fImsgmap\fP フィールドはシステム上の全てのキューに入っているメッセージ総数を返す。 \fImsgtql\fP
フィールドはシステム上の全てのキューに入っている全メッセージの 総バイト数を返す。
.TP
\fBMSG_STAT\fP (Linux 固有)
\fBIPC_STAT\fP と同じく \fImsqid_ds\fP 構造体を返す。 但し、 \fImsqid\fP
-å¼\95ã\81\8dæ\95°ã\81¯ã\80\81ã\82ã\83¥ã\83¼è\98å\88¥å\90ã\81§ã\81¯ã\81ªã\81\8fã\80\81ã\82·ã\82¹ã\83\86ã\83 ä¸\8aã\81®å\85¨ã\81¦ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ ã\81«é\96¢ã\81\99ã\82\8bæ\83\85å ±ã\82\92管ç\90\86ã\81\99ã\82\8bã\82«ã\83¼ã\83\8dã\83«ã\81®å\86\85é\83¨é\85\8då\88\97ã\81¸ã\81®ã\82¤ã\83³ã\83\87ã\83\83ã\82¯ã\82¹ã\81§ã\81\82ã\82\8bã\80\82
+引き数は、キュー識別子ではなく、システム上の全てのメッセージキュー に関する情報を管理するカーネルの内部配列へのインデックスである。
.SH 返り値
成功すると、 \fBIPC_STAT\fP, \fBIPC_SET\fP, \fBIPC_RMID\fP は 0 を返す。 \fBIPC_INFO\fP と
-\fBMSG_INFO\fP æ\93\8dä½\9cã\81¯ã\80\81æ\88\90å\8a\9fã\81\99ã\82\8bã\81¨ã\80\81å\85¨ã\81¦ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\81«é\96¢ã\81\99ã\82\8bæ\83\85å ±ã\82\92 管ç\90\86ã\81\97ã\81¦ã\81\84ã\82\8bã\82«ã\83¼ã\83\8dã\83«ã\81®å\86\85é\83¨é\85\8då\88\97ã\81®ä½¿ç\94¨ä¸ã\82¨ã\83³ã\83\88ã\83ªã\81®ã\82¤ã\83³ã\83\87ã\83\83ã\82¯ã\82¹ã\81®
-ã\81\86ã\81¡æ\9c\80大å\80¤ã\82\92è¿\94ã\81\99 (ã\81\93ã\81®æ\83\85å ±ã\81¯ã\80\81ã\82·ã\82¹ã\83\86ã\83 ã\81®å\85¨ã\81¦ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\81«é\96¢ã\81\99ã\82\8bæ\83\85å ±ã\82\92 å\8f\96å¾\97ã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\80\81 \fBMSG_STAT\fP
+\fBMSG_INFO\fP 操作は、成功すると、全てのメッセージキューに関する情報を 管理しているカーネルの内部配列の使用中エントリのインデックスの
+うち最大値を返す (この情報は、システムの全てのメッセージキューに関する情報を 取得するために、 \fBMSG_STAT\fP
操作を繰り返し実行する際に使用できる)。 \fBMSG_STAT\fP 操作は、成功すると、 \fImsqid\fP
-ã\81§æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\82¤ã\83³ã\83\87ã\83\83ã\82¯ã\82¹ã\82\92æ\8c\81ã\81¤ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\81®è\98å\88¥å\90ã\82\92è¿\94ã\81\99ã\80\82
+で指定されたインデックスを持つメッセージキューの識別子を返す。
エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。
.SH エラー
失敗した場合、 \fIerrno\fP は以下の値の中のどれか一つに設定される:
.TP
\fBEACCES\fP
-å¼\95ã\81\8dæ\95° \fIcmd\fP ã\81\8c \fBIPC_STAT\fP ã\81¾ã\81\9fã\81¯ \fBMSG_STAT\fP ã\81«ç\89ã\81\97ã\81\84ã\81\8cã\80\81å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83ã\82»ã\82¹ã\81\8cã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ \fImsqid\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
-ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\81\8cå\89\8aé\99¤ã\81\95ã\82\8cã\81\9fã\80\82
+メッセージキューが削除された。
.TP
\fBEINVAL\fP
\fIcmd\fP または \fImsqid\fP に不正な値が設定された。 もしくは、 \fBMSG_STAT\fP 操作の場合に、 \fImsqid\fP