/*发送消息,单项的传递消息*/
来源:互联网 发布:js代码压缩工具 gzip 编辑:程序博客网 时间:2024/05/22 05:04
#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 //定义的宏MAX_TEXT的值为512个字节
// 系统定义的BUFSIZ的值为8192
struct my_msg_st //定义一个结构体名为my_msg_st
{
int my_msg_type; //结构体成员,定义一个名为my_msg_type为整型数据
char msg_text[MAX_TEXT]; //结构本成员,定义一个字符数组类型my_text[512]
};
int main(int argc, char *argv[]) //主函数,包含两个参数
{
int running=1; //定义running为整型数据,给running赋初值为1
struct my_msg_st some_data; //定义了一个结构体变量名为some_data
int msgid; //定义msgid为整型数据
char buffer[BUFSIZ]; //定义一个字符数组buffer[8192]
/*下面:如果可要创建一个Key值为12345,且户权限为0666的消息队列,如果创建失败为-1,则执行下面*/
if((msgid=msgget((key_t)12345,0666|IPC_CREAT))==-1)
{
perror("message"); //当msgid等于-1时则打印错误的信息
exit(EXIT_FAILURE); //异常退出
}
while(running) //当running的值为"真"时
{
printf("Enter the mssage to send:"); //打印提示信息
fgets(buffer,BUFSIZ,stdin); //从键盘输入最大BUFSIZ这么大的字节,保存在buffer中去
some_data.my_msg_type=1; //结构体变量some_data的成员变量my_msg_type赋初值为1
strcpy(some_data.msg_text,buffer); //将buffer的内容复制到some_date.msg_text中去
/*下面:如果消息创建成功,发送大小为MAX_TEXT的some_data结构体变量的msgid消息队列这个描述符 */
if((msgsnd(msgid,(void *)&some_data,MAX_TEXT,0))==-1)
{
perror("msgsnd"); //发送失败时则打印错误的信息
exit(EXIT_FAILURE); //异常退出
}
if(strncmp(buffer,"end",3)==0) //只比较字符串前面3个字符buffer和end等于0时,执行下面
{
running=0; //把零赋给running.
}
}
return 0; //返回零
}
- /*发送消息,单项的传递消息*/
- /*接收消息--单项的接收消息*/
- Queue 消息的发送与接收(PTP 消息传递模型)
- EJB---->消息驱动bean--Queue 消息的发送与接收(PTP 消息传递模型)
- EJB---->消息驱动bean--Topic 消息的发送与接收(Pub/sub 消息传递模型)
- NGUI的消息传递
- 窗口消息的传递
- SOAP消息的传递
- 数据、消息的传递
- 发送的消息
- Handler的发送消息
- Topic消息的发送与接收(Pub/Sub 消息传递模型)
- Handler消息传递机制(三)Message消息的两种发送方式
- Handler消息传递机制(四)子线程接收主线程发送的消息
- Handler传递消息怎样停止发送
- 进程间传递消息(发送和接收系统消息)
- windows的消息传递--消息盒子
- windows的消息传递--消息盒子
- After restoring database in SQL Server, if you can't use diagram, execute these sentences
- ListView按指定列排序
- list
- JTS学习-com.vividsolutions.jts.algorithm包
- 6个最常用的Word论文排版技巧
- /*发送消息,单项的传递消息*/
- 这是吿诉自己,要学会...
- OpenGL Study 3
- [分享] Linux下用Anjuta写个Hello World 的C++程序竟如此简单!
- Windows API一日一练(47)CreateSemaphore和ReleaseSemaphore函数
- Web 测试
- Eclipse环境配置
- 基于S3C2410平台的LCD for Linux 2.6 驱动移植
- /*接收消息--单项的接收消息*/