编程接口指南

控制消息队列

msgctl(2) 可更改消息队列的权限和其他特性。 msqid 参数必须为现有消息队列的 ID。 cmd 参数为以下各项之一:

IPC_STAT

将有关队列状态的信息放入 buf 指向的数据结构中。 进程必须具有读取权限,此调用才会成功。

IPC_SET

设置消息队列的属主用户和组 ID、权限以及大小(以字节数为单位)。 进程必须具有属主、创建者或超级用户的有效用户 ID,此调用才会成功。

IPC_RMID

删除 msqid 参数所指定的消息队列。

以下代码说明了 msgctl(2) 及其各种标志。

#include			<sys/types.h>

 #include			<sys/ipc.h>

 #include			<sys/msg.h>



 	...

 	if (msgctl(msqid, IPC_STAT, &buf) == -1)  {

 		perror("msgctl: msgctl failed");

 		exit(1);

 	}

 	...

 	if (msgctl(msqid, IPC_SET, &buf) == –1) {

 		perror("msgctl: msgctl failed");

 		exit(1);

 	}

 	...