linux 消息队列简单例程
2011-04-29 17:52
393 查看
1.首先介绍下BUFSIZ这个关键字什么意思:
BUFSIZ[=8192],这个值在你的stdio.h的182行有申明
2.发送端程序
3.接收端
BUFSIZ[=8192],这个值在你的stdio.h的182行有申明
2.发送端程序
#include<stdlib.h> #include<stdio.h> #include<unistd.h> #include<string.h> #include<sys/types.h> #include<sys/ipc.h> #include<sys/msg.h> #define MAX_TEXT 512 struct my_msg_st { int my_msg_type; char msg_text[MAX_TEXT]; }; int main(int argc,char *argv[]) { int running=1; struct my_msg_st some_data; int msgid; char buffer[BUFSIZ]; if((msgid=msgget((key_t)12345,0666|IPC_CREAT))==-1) { perror("msgget"); exit(EXIT_FAILURE); } while(running) { printf("Enter the mssage to send:"); fgets(buffer,BUFSIZ,stdin); some_data.my_msg_type=1; strcpy(some_data.msg_text,buffer); if((msgsnd(msgid,(void *)&some_data,MAX_TEXT,0))==-1) { perror("msgsnd"); exit(EXIT_FAILURE); } if(strncmp(buffer,"end",3)==0) { running=0; } } return 0; }
3.接收端
rec.c//this is the receiver program
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
struct my_msg_st
{
int my_msg_type;
char msg_text[BUFSIZ];
};
int main(int argc,char *argv[])
{
int running=1;
int msgid;
struct my_msg_st some_data;
int msg_to_receive=0;
if((msgid=msgget((key_t)12345,0666 | IPC_CREAT))==-1)
{
perror("msgget");
exit(EXIT_FAILURE);
}
while(running)
{
if(msgrcv(msgid,(void *)&some_data,BUFSIZ,msg_to_receive,0)==-1)
{
perror("msgrcv");
exit(EXIT_FAILURE);
}
printf("receiver mssage:%s",some_data.msg_text);
if(strncmp(some_data.msg_text,"end",3)==0)
running=0;
}
if(msgctl(msgid,IPC_RMID,0)==-1)
{
fprintf(stderr,"msgctl(IPC_RMID) failed/n");
exit(EXIT_FAILURE);
}
return 0;
}
相关文章推荐
- linux 消息队列简单例程
- Linux 进程间通信(posix消息队列 简单)实例
- Linux 进程间通信(posix消息队列 简单)实例
- linux 消息队列简单入门
- Linux进程间通信(简单的消息队列通信)
- Linux 消息队列 实现的简单聊天室
- 【ARM&Linux】消息队列的简单使用
- Linux消息队列(简单的信号通知)
- Linux下,使用C/C++一个简单的消息处理程序
- linux消息队列相关知识
- Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存
- linux消息队列编程实例
- redis简单的消息队列
- linux消息队列操作
- linux 进程学习笔记-消息队列messagequeue
- Linux进程间通信方式之消息队列
- Linux进程间通信&mdash;&mdash;消息队列
- Linux中posix消息队列系统函数mq_timedreceive()谨慎使用
- linux 消息队列 和 内存共享的简短说明
- linux应用编程笔记(15)消息队列编程