消息队列:
创建消息队列
打开消息队列
操作:从消息队列读 往消息队列写
删除消息队列
System V:
int msgget(key_t key, int msgflg)
创建/打开消息队列
key:名称
msgflg:消息队列的属性
key_t ftok(const char *pathname, int proj_id)
int msgctl(int msqid, int cmd, struct msqid_ds *buf)
对于消息队列属性设置或获取
msqid:msgget()返回值
cmd:IPC_RMID=删除消息队列
int msgsnd(int msqid,//消息队列描述符
const void *msgp,//数据
size_t msgsz,//数据大小
int msgflg)//属性;
ssize_t msgrcv(int msqid,//消息队列描述符
void *msgp,//数据
size_t msgsz,//大小
long msgtyp,//类型 只能接收type相等消息队列中消息 0=先进先出
int msgflg)//属性
Psix:
mqd_t mq_open(const char *name, int oflag);
打开消息队列
mqd_t mq_open(const char *name, int oflag, mode_t mode,struct mq_attr *attr)
创建消息队列
name:名称 ”/name“
oflag:属性
mode:权限
attr:消息队列属性
mqd_t mq_getattr(mqd_t mqdes, struct mq_attr *attr);
mqd_t mq_setattr(mqd_t mqdes, struct mq_attr *newattr,
struct mq_attr *oldattr)
mqd_t mq_send(mqd_t mqdes,//描述符
const char *msg_ptr,//数据
size_t msg_len,//数据长度
unsigned msg_prio//优先级发送)
ssize_t mq_receive(mqd_t mqdes,
char *msg_ptr,//缓冲区大小必须是每个消息最大字节数
size_t msg_len,
unsigned *msg_prio)
mqd_t mq_unlink(const char *name)
阅读(1645) | 评论(0) | 转发(0) |