消息队列IPC(inter process communication)小记
2013-04-06 22:46
253 查看
1.获取消息队列
消息队列相关的API都在sys/msg.h库中,要创建消息队列,使用函数msgget();这个函数第一个参数为消息队列ID(此Id是给定主机上唯一的描述符或关键字),第二个参数为识别消息旗标的参数,返回值是一个句柄,和文件描述符相似,指向指定Id的消息队列。
key_t值必须是一个非零的值或者是特殊符号IPC_PRIVATE。
msgflg允许用户设置两个不同类型的参数:一个指令和一个访问权限设置选项。权限和文件权限类似。指令有三种:
1)IPC_CREAT
2)IPC_CREAT|IPC_EXCL
3)0:告诉msgget消息队列已存在,获取消息队列描述符
key=ftok("/home/queue",0); //保证消息队列id唯一
msgid=msgget(key,IPC_CREAT|0666);
2.配置消息队列
消息大小默认是16kB,可以采用msgctl()函数调整其大小。eg:
struct msqid_ds buf;
msgid=msgget(xxx,0);
msgctl(msgid,XXX,&buf);
msgctl()函数的第二个参数有三种值可以设置:
1)IPC_STAT:读取消息队列当前默认设置
2)IPC_SET :修改消息队列设置
3)IPC_RMID:移除指定的消息队列
注:msgctl()函数可以获取消息队列信息、设置消息队列信息和移除消息队列
3.向消息队列写入消息
消息通过消息队列发送,消息队列上下文环境对消息只有一个限制,即要发送的消息对象必须在它的开头有一个long类型的变量,用于定义消息的类型。通过msgsnd()函数来向消息队列写消息。
4.从消息队列读取消息
首先通过msgget()函数获取消息队列Id,然后通过msgrcv()函数从消息队列读取消息。
5.移除消息队列
使用msgctl()函数和参数IPC_RMID来移除。
msgid=msgget(xxx,0);
msgctl(msgid,IPC_RMID,NULL);
消息队列相关的API都在sys/msg.h库中,要创建消息队列,使用函数msgget();这个函数第一个参数为消息队列ID(此Id是给定主机上唯一的描述符或关键字),第二个参数为识别消息旗标的参数,返回值是一个句柄,和文件描述符相似,指向指定Id的消息队列。
int msgget(key_t key, int msgflg);
key_t值必须是一个非零的值或者是特殊符号IPC_PRIVATE。
msgflg允许用户设置两个不同类型的参数:一个指令和一个访问权限设置选项。权限和文件权限类似。指令有三种:
1)IPC_CREAT
2)IPC_CREAT|IPC_EXCL
3)0:告诉msgget消息队列已存在,获取消息队列描述符
key=ftok("/home/queue",0); //保证消息队列id唯一
msgid=msgget(key,IPC_CREAT|0666);
2.配置消息队列
消息大小默认是16kB,可以采用msgctl()函数调整其大小。eg:
struct msqid_ds buf;
msgid=msgget(xxx,0);
msgctl(msgid,XXX,&buf);
msgctl()函数的第二个参数有三种值可以设置:
1)IPC_STAT:读取消息队列当前默认设置
2)IPC_SET :修改消息队列设置
3)IPC_RMID:移除指定的消息队列
注:msgctl()函数可以获取消息队列信息、设置消息队列信息和移除消息队列
3.向消息队列写入消息
消息通过消息队列发送,消息队列上下文环境对消息只有一个限制,即要发送的消息对象必须在它的开头有一个long类型的变量,用于定义消息的类型。通过msgsnd()函数来向消息队列写消息。
4.从消息队列读取消息
首先通过msgget()函数获取消息队列Id,然后通过msgrcv()函数从消息队列读取消息。
5.移除消息队列
使用msgctl()函数和参数IPC_RMID来移除。
msgid=msgget(xxx,0);
msgctl(msgid,IPC_RMID,NULL);
相关文章推荐
- 【IPC】Linux进程间通信(Inter Process Communication)通信方式
- Inter-Process Communication IPC
- IPC--消息队列 message queue --msgctl 函数(创建 删除 查看 综合运用)
- 4、进程间通信-消息队列IPC
- linux 进程间通信(IPC)一消息队列
- Liunx进程间IPC通信—消息队列
- IPC之消息队列
- Aix Unix IPC之消息队列
- IPC通信之消息队列、信号量和共享内存
- Linux进程间通信(IPC)编程实践(十二)Posix消息队列--基本API的使用
- linux ipc system v 消息队列源码
- System V IPC & POSIX IPC(一):消息队列
- Linux下IPC主题一————消息队列
- Linux--进程间通讯IPC(信号量,消息队列,共享内存)
- 【Linux】进程间通信(IPC)之消息队列详解及测试用例
- IPC之消息队列
- ipc 消息队列 即时同步聊天通信
- Linux OS - Advanced of 进程 (IPC-管道, 消息队列, 信号量)
- Inter process communication
- IPC——消息队列