kmsgctl 内核服务
用途
提供消息队列控制操作。
语法
参数
| 项 | 描述 |
|---|---|
| msqid | 指定消息队列标识,该消息队列标识指示正在为其请求控制操作的消息队列。 |
| cmd | 指定正在请求哪个控制操作。 有三个有效命令。 |
| 布夫 | 指向由 kmsgctl 服务的调用者提供的 msqid_ds 结构。 根据 命令 参数,从该结构或从该结构中返回的状态中获取数据。 msqid_ds 结构在 /usr/include/sys/msg.h 文件中定义。 |
描述
kmsgctl 内核服务提供各种消息队列控制操作,如 命令 参数所指定。 kmsgctl 内核服务为内核方式下的用户方式进程提供与 消息控制 子例程为内核进程或用户方式下的用户方式进程执行的功能相同的功能。 kmsgctl 服务可以由内核方式下的用户方式进程或由内核进程调用。 内核进程也可以调用 消息控制 子例程以提供相同的函数。
可以使用 命令 参数来指定以下三个命令:
| 项 | 描述 |
|---|---|
| IPC_STAT | 仅设置记录的字段。 请参阅 消息控制 子例程。 |
| IPC_SET | 将与 姆斯基德 参数关联的数据结构的以下字段的值设置为在 布夫 参数指向的结构中找到的相应值:
要执行 IPC_SET 操作,当前进程必须具有等于以下项的值的有效用户标识:msg_perm.uid或msg_perm.cuid与 姆斯基德 参数关联的数据结构中的字段。 提高该系统的价值msg_qbytes字段,调用进程必须具有相应的系统特权。 |
| IPC_RMID | 从系统中移除由 姆斯基德 参数指定的消息队列标识。 此操作还会破坏消息队列以及与该消息队列相关联的数据结构。 要执行此操作,当前进程必须具有等于该值的有效用户标识。msg_perm.uid或msg_perm.cuid与 姆斯基德 参数关联的数据结构中的字段。 |
执行环境
kmsgctl 内核服务只能从进程环境中进行调用。
返回值
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 指示成功完成。 |
| EINVAL | 指示
|
| EACCES | 由 命令 参数指定的命令等于 IPC_STAT ,并且对调用过程拒绝了读许可权。 |
| EPERM | 由 命令 参数指定的命令等于 IPC_RMID, IPC_SET,并且调用进程的有效用户标识不等于调用进程的值的值msg_perm.uid与 姆斯基德 参数关联的数据结构中的字段。 |
| EPERM | 指示以下条件:
|