msgsnd(msgid, &msg_data, sizeof(msg_data), 0); if(strncmp(msg_data.msgtext,"end",3)==0) { msgsnd(msgid, "end", 3, 0); running = 0; } } //删除消息队列 msgctl(msgid, IPC_RMID, 0); return 0; } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ...
intmsgctl(int msgid, int command, struct msgid_ds *buf); command是将要采取的动作,它可以取3个值, IPC_STAT:把msgid_ds结构中的数据设置为消息队列的当前关联值,即用消息队列的当前关联值覆盖msgid_ds的值。 IPC_SET:如果进程有足够的权限,就把消息列队的当前关联值设置为msgid_ds结构中给出的值 IPC_RM...
IPC_STAT:把msgid_ds结构中的数据设置为消息队列的当前关联值,即用消息队列的当前关联值覆盖msgid_ds的值。 IPC_SET:如果进程有足够的权限,就把消息列队的当前关联值设置为msgid_ds结构中给出的值 IPC_RMID:删除消息队列 buf是指向msgid_ds结构的指针,它指向消息队列模式和访问权限的结构。msgid_ds结构至少包括以...
③ IPC_RMID,将队列从系统内核中删除。 ④ IPC_INFO,(没读明白,不翻译了) ⑤ MSG_INFO,功能类似于IPC_INFO,区别在于: ⑥ MSG_STAT,功能类似于IPC_STAT,区别在于msgid参数不再是真的msgid,而是内核中一个数组的索引,这个数组维护着所有消息队列的信息。 (3)返回值:当cmd为IPC_STAT、IPC_SET、IPC_RMID时,...
#include <sys/ipc.h> #include <sys/msg.h> 函数说明 得到消息队列标识符或创建一个消息队列对象并返回消息队列标识符 函数原型 intmsgget(key_tkey,intmsgflg)函数传入值 key 0(IPC_PRIVATE):会建立新的消息队列 大于0的32位整数:视参数msgflg来确定操作。通常要求此值来源于ftok返回的IPC键值 msgflg 0...
types.h>#include<unistd.h>#include<errno.h>#defineERR_EXIT(m)\do{\perror(m);\exit(EXIT_FAILURE);\}while(0)intmain(void){intmsgid;msgid=msgget(1234,0);if(msgid==-1)ERR_EXIT("msgget");printf("msgget success\n");printf("msgid=%d\n",msgid);msgctl(msgid,IPC_RMID,NULL);return0;...
IPC_RMID can only be executed by a process with the appropriate privileges or that has an effective user ID equal to the value of msg_perm.cuid or msg_perm.uid in the msqid_ds data structure associated with msgid.Returned Value If successful, msgctl() returns a value of 0. If unsuccessf...
simba@ubuntu:~/Documents/code/linux_programming/UNP/system_v$ cat /proc/sys/kernel/msgmni 1711 ⼆、IPC对象数据结构 内核为每个IPC对象维护⼀个数据结构 struct ipc_perm { key_t __key; /* Key supplied to xxxget(2) */ uid_t uid; /* Effective UID of owner */ gid_t ...
IPC_RMID 从系统中除去由msgid指定的消息队列标识,并销毁与其关联的消息队列和msqid_ds或msqid_ds64数据结构。IPC_RMID只能由具有相应特权的进程或具有与msgid相关联的msqid_ds或msqid_ds64数据结构中的msg_perm.cuid或msg_perm.uid值的有效用户标识的进程执行。
2. msgctl函数原型msgctl (获取和设置消息队列的属性)所需头文件#include #include #include 函数说明获取和设置消息队列的属性函数原型int msgctl(int msqid, int cmd, struct msqid_ds *buf)函数传入值msqid消息队列标识符cmdIPC_STAT:获得msgid的消息队列头数据到buf中IPC 5、_SET:设置消息队列的属性,要设置的...