deepfuture@deepfuture-laptop:~/private/mytest$ gcc -o testmes testmes.c
testmes.c: In function ‘main’:
testmes.c:18: warning: incompatible implicit declaration of built-in function ‘exit’
testmes.c:22: warning: incompatible implicit declaration of built-in function ‘malloc’
testmes.c:24: warning: incompatible implicit declaration of built-in function ‘strcpy’
testmes.c:32: warning: incompatible implicit declaration of built-in function ‘exit’
testmes.c:34: warning: incompatible implicit declaration of built-in function ‘free’
testmes.c:45: warning: incompatible implicit declaration of built-in function ‘exit’
deepfuture@deepfuture-laptop:~/private/mytest$ ./testmes
message 32769 queue created!
message send
recv:deepfuture.iteye.com
deepfuture@deepfuture-laptop:~/private/mytest$
#define _GNU_SOURCE
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/types.h>
int main(void){
int queue_id;
struct msgbuf *msg;
struct msgbuf *recv_msg;
int rc;
//建立消息队列
queue_id=msgget(IPC_PRIVATE,IPC_CREAT|0600);//IPC_PRIVATE表示私有消息队列,正整数表示公共的消息队列
if (queue_id==-1){
perror("create queue error!\n");
exit(1);
}
printf("message %d queue created!\n",queue_id);
//创建发送消息结构
msg=(struct msgbuf*)malloc(sizeof(struct msgbuf)+100);//100为消息的长度,msgbuf结构只有2个成员一个成员是mytpe,另一个成员是一个字节的mtext,在结构后分配更多的空间以存放消息字符串
msg->mtype=1;//消息类型,正整数
strcpy(msg->mtext,"deepfuture.iteye.com");
//发送消息
rc=msgsnd(queue_id,msg,100,0);
//最后一个参数可以是是0与随后这些值(或者就是0):IPC_NOWAIT,如果消息类型没有则立即返回,函数调用失败
//MSG_EXCEPT,当消息类型大于0时,读与消息类型不同的第一条消息
//MSG_NOERROR,如果消息长度大于100字节则被截掉
if (rc==-1){
perror("msgsnd error\n");
exit(1);
}
free(msg);//发送完毕,释放内存
printf("message send\n");
recv_msg=(struct msgbuf*)malloc(sizeof(struct msgbuf)+100);
rc=msgrcv(queue_id,recv_msg,101,0,0);//接收消息,倒数第二个参数是消息的类型,0表示消息队列中的第一条消息
//正整数表示对应的消息队列中的消息,负整数表示消息队列中的小于或等于该值的绝对值的消息中的第一条消息。
//最后一个参数可以是0与随后这些值(或者就是0):IPC_NOWAIT,如果消息类型没有则立即返回,函数调用失败
//MSG_EXCEPT,当消息类型大于0时,读与消息类型不同的第一条消息
//MSG_NOERROR,如果消息长度大于100字节则被截掉
if (rc==-1){
perror("recv error\n");
exit(1);
}
printf("recv:%s\n",recv_msg->mtext);
return 0;
}
分享到:
相关推荐
15.7 消息队列418 15.8 信号量422 15.9 共享存储427 15.10 客户进程-服务器进程属性432 15.11 小结434 习题434 第16章网络ipc:套接字437 16.1 引言437 16.2 套接字描述符437 16.3 寻址439 16.3.1 字节序...
15.7 消息队列418 15.8 信号量422 15.9 共享存储427 15.10 客户进程-服务器进程属性432 15.11 小结434 习题434 第16章网络ipc:套接字437 16.1 引言437 16.2 套接字描述符437 16.3 寻址439 16.3.1 字节序...
4.7 Linux模块的使用计数 第5章Linux文件系统 5.1 Linux文件系统概述 5.1.1 Linux文件系统的目录结构 5.1.2设备驱动与Linux文件系统的关联 5.2 Linux设备文件系统 5.2.1 devfs设备文件系统 5.2.2 udev设备文件系统 ...
- 可以用来作为私有云存储系统,存储你的文件... - 当然你也可以用来分享文件 - Web IDE / browser code editor awesomeness - 更多场景等你来挖掘!…… #### 3.使用说明 管理员: admin/admin 普通用户:...
8.2 编程能力,代码控制能力,复用与接口,轮子发明与使用 170 8.3 OO,模板,设计模式与设计 171 8.4 设计能力和程序员能力模型 172 8.4 自上而下设计和自下而上设计 173 8.5 大中型软件和复用与逻辑达成 177 8.6 ...
它演示了带有堆栈实例( cdk_private_s3_hosting_stack )的CDK应用程序,该堆栈实例包含订阅了Amazon SNS主题的Amazon SQS队列。 cdk.json文件告诉CDK Toolkit如何执行您的应用程序。 该项目的设置类似于标准的...
3.4 简单队列服务SQS 107 3.4.1 SQS基本模型 107 3.4.2 两个重要概念 107 3.4.3 消息 108 3.4.4 身份认证 109 3.5 简单数据库服务Simple DB 109 3.5.1 重要概念 110 3.5.2 存在的问题及解决办法 112 3.5.3 Simple DB...
15.7 消息队列 15.8 信号量 15.9 共享存储 15.10 客户进程-服务器进程属性 15.11 小结 习题 第16章 网络IPC:套接字 16.1 引言 16.2 套接字描述符 16.3 寻址 16.3.1 字节序 16.3.2...
15.7 消息队列 418 15.8 信号量 422 15.9 共享存储 427 15.10 客户进程-服务器进程属性 432 15.11 小结 434 习题 434 第16章 网络IPC:套接字 437 16.1 引言 437 16.2 套接字描述符 437 16.3 寻址...
415 15.6.2 权限结构 416 15.6.3 结构限制 417 15.6.4 优点和缺点 417 15.7 消息队列 418 15.8 信号量 422 15.9 共享存储 427 15.10 客户进程-服务器进程属性 432 15.11 小结 434 习题 434 第16章...
15.7 消息队列418 15.8 信号量422 15.9 共享存储427 15.10 客户进程-服务器进程属性432 15.11 小结434 习题434 第16章网络IPC:套接字437 16.1 引言437 16.2 套接字描述符437 16.3 寻址439 16.3.1 字节序440 16.3.2 ...