message queue
来源:互联网 发布:阿迪达斯网络销售额 编辑:程序博客网 时间:2024/05/05 05:24
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
typedef struct {
long mtype; //消息类型必须大于0
char mtext[BUFSIZ];
}msg_info;
int creat_msg_queue()
{
key_t key;
int proj_id;
int msqid;
struct msqid_ds buffer;
proj_id=2;
key=ftok("/home/program",proj_id);
if(key==-1){
perror("cannot generate the IPC key");
return -1;
}
msqid=msgget(key,IPC_CREAT | 0660);
if(msqid==-1){
perror("cannot create message queue resource");
return -1;
}
return msqid;
}
int send_msg(int msqid,char* msg)
{
int result;
msg_info buf;
buf.mtype=100;
strcpy(buf.mtext,msg);
result=msgsnd(msqid,&buf,strlen(msg),0);
//最后一个参数 flag 既可以是0也可以是IPC_NOWAIT :如果没有存放消息的空间,就立马返回。同理,若msgrcv如设置这个IPC_NOWAIT 标志,在没有消息得到的情况下,就会立即返回一个ENOMSG错误。
1)
perror("cannot send message to the message queue");
return result;
}
int show_msg_queue_stat(int msqid)
{
struct msqid_ds buffer;
int flg;
//提供一个消息队列上的各种控制操作 IPC_STAT :通过给buffer 返回与所指定消息队列对应的当前msgqi_ds结构信息。
flg=msgctl(msqid,IPC_STAT,&buffer);
if(flg==-1){
perror("cannot get status of the message queue");
return -1;
}
printf("=======Message Queue Info========\n");
printf("effective user id : %d \n",buffer.msg_perm.uid);
printf("effective group id: %d \n",buffer.msg_perm.gid);
printf("message queue's creator user id : %d \n",buffer.msg_perm.cuid);
printf("message queue's creator group id : %d \n",buffer.msg_perm.cgid);
printf("access mode : %x\n",buffer.msg_perm.mode);
printf("Maximum number of bytes allowed in message queue : %d \n",buffer.msg_qbytes);
printf("Current number of bytes in message queue (non-standard) : %d \n",buffer.__msg_cbytes);
printf("Current number of messages in message queue : %d \n",buffer.msg_qnum);
return 0;
}
int main(int argc,char* argv[])
{
int msqid;
if(msqid=creat_msg_queue()<0){
printf("create msg queue fail");
return -1;
}
if(send_msg(msqid,"test message")<0){
printf("send message fail");
return -1;
}
if(show_msg_queue_stat(msqid)<0){
printf("show message queue fail");
return -1;
}
return 0;
}
- Message Queue
- message queue
- Message Queue
- Message queue
- Linux IPC - Message Queue
- Message Queue: MSMQ/MQSeries
- 3.13 Message Queue任务
- windows, thread ,message queue
- POSIX message queue
- Example for Message Queue
- Examining a Message Queue
- IPC SystemV Message Queue
- hdu1509 Windows Message Queue
- zoj2724-Windows Message Queue
- HDU1509-Windows Message Queue
- Message Queue和handle
- 消息队列 (Message Queue)
- linux message queue msgget
- eclipse时间问题解决
- dpkg 卸载 wine-thunder
- Unix高级编程第二,三章
- linux调试
- 关于varchar/varchar2/nvarchar2的区别
- message queue
- 双核与双芯真的不同
- java web中的过滤器和监听器
- VLfeat库的配置
- Dom 解析XML文件
- linux如何安装tomcat
- Android HAL的被调用流程
- 指针的步长问题,int a[5]。a+1跟&a+1跟(int)a+1的区别
- dedecms采集基础篇