msgctl サブルーチン
目的
メッセージ制御操作を提供します。
ライブラリー
標準 C ライブラリー (libc.a)
構文
#include <sys/msg.h>
int msgctl (MessageQueueID,Command,Buffer)
int MessageQueueID, Command;
struct msqid_ds * Buffer;
int msgctl (MessageQueueID,Command,Buffer)
int MessageQueueID, Command;
struct msqid_ds * Buffer;
説明
msgctl サブルーチンは、 Command パラメーターによって指定され、 Buffer パラメーターが指す構造に保管される、さまざまなメッセージ制御操作を提供します。 msqid_ds 構造体は、 sys/msg.h ファイルに定義されます。
メッセージ・キューには、以下の制限が適用されます。
- 最大メッセージ・サイズは 4 メガバイトです。
- キュー当たりのメッセージの最大数は 524288 です。
- メッセージ・キュー ID の最大数は 1048576 です。
- キュー内の最大バイト数は、 vmo コマンドの
ipc_msgmnbチューナブル・パラメーターによって制御されます。
パラメーター
| 項目 | 説明 |
|---|---|
| MessageQueueID | メッセージ・キュー ID を指定します。 |
| Command | Command パラメーターには、以下の値を使用できます。
|
| buffer | msqid_ds 構造体を指します。 |
戻り値
正常終了すると、 msgctl サブルーチンは値 0 を戻します。 そうでない場合は-1が返され、エラーを示すerrnoグローバル変数が設定される。
エラー・コード
以下のいずれかの条件に該当する場合、 msgctl サブルーチンは失敗します。
| 項目 | 説明 |
|---|---|
| EINVAL | CommandまたはMessageQueueIDパラメータが無効です。 |
| EACCES | Command パラメーターが IPC_STAT 値と等しく、呼び出しプロセスが読み取り許可を拒否されました。 |
| EPERM | Command パラメーターは IPC_RMID 値と等しく、呼び出しプロセスの実効ユーザー ID には root ユーザー権限がありません。 または、 Command パラメーターが IPC_SET 値と等しく、呼び出し側プロセスの実効ユーザー ID が、msg_perm.uidフィールドまたはmsg_perm.cuidフィールドを持つMessageQueueID |
| EPERM | Command パラメーターが IPC_SET 値と等しい場合は、以下の値を増やそうとしました。msg_qbytes呼び出しプロセスの実効ユーザー ID には root ユーザー権限がありません。 |
| EFAULT | Buffer パラメーターは、プロセス・アドレス・スペースの外部を指しています。 |