Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ msgctl(2V) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

msgget(2V)

msgop(2V)

MSGCTL(2V)  —  NEWS-OS Programmer’s Manual

名称

msgctl − メッセージの制御。

形式

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

int msgctl (msqid, cmd, buf)
int msqid, cmd;
struct msqid_ds ∗buf;

解説

Msgctl は各種メッセージの制御動作を cmd によって行います。 以下の cmds が指定可能。

IPC_STAT msqid に関連するデータ構造体の各メンバー のカレント値を buf によって示す構造体に設定 します。 この構造体の内容は intro(2) で指定されます。 {READ}

IPC_SET msqid に関連するデータ構造体の以下の メンバーの値を buf で示す構造体の対応する値に設定します。

msg_perm.uid
msg_perm.gid
msg_perm.mode /∗ 下位9ビットのみ ∗/
msg_qbytes

この cmdは スーパーユーザーのIDまたは msqid に関連するデータ構造体 の msg_perm.uid の値と同じ有効ユーザIDを持つ プロセスによってのみ 実行できます。

IPC_RMID msqid で指定される メッセージ・キュー識別子を システムから 取り除き、 メッセージ・キューと 関連するデータ構造体を 破壊します。 この cmd は スーパーユーザー のユーザIDまたは msqid に関するデータ構造体の msg_perm.uid の値を持つ プロセスによってのみ 実行します。

Msgctl は以下の1つでも該当する場合、 失敗します。

­[EINVAL]
Msqid は有効なメッセージ・キュー識別子 ではない。

­[EINVAL] Cmd は有効なコマンドではない。

­[EACCES] Cmd が IPC_STAT で、読み出し動作が呼びしたプロセス に対して許されていない。 (intro (2)参照)

­[EPERM] Cmd が IPC_RMID または IPC_SET で、 呼び出しプロセス の有効ユーザーIDが スーパーユーザーの ユーザーIDでなく、 また msqid に関する データ構造体の msg_perm.uid の値とも同じではない。

­[EPERM] Cmd が IPC_SET であり、 msg_qbytes の値を増加させようとしたが、 呼び出しプロセス の有効ユーザーIDが スーパーユーザーのものと異なる。

­[EFAULT] Buf が不正アドレスを示している。

リターン値

コマンドの実行に 成功した場合、 ゼロが返されます。 そうでなければ、 −1 が返され、 エラーを示す errno が設定されます。

関連事項

intro(2), msgget(2V), msgop(2V). 

NEWS-OSRelease 4.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026