`
deepfuture
  • 浏览: 4328276 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79383
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68265
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101328
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:280869
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14568
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65415
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31256
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45136
社区版块
存档分类
最新评论

linux-使用私有消息队列

阅读更多

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;
}
 
0
0
分享到:
评论

相关推荐

    UNIX环境高级编程_第2版.part1

    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 字节序...

    UNIX环境高级编程_第2版.part2

    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 字节序...

    Android驱动开发权威指南

    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设备文件系统 ...

    KODExplorer 芒果云-资源管理器

    - 可以用来作为私有云存储系统,存储你的文件... - 当然你也可以用来分享文件 - 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:仅使用API​​网关创建私有静态S3网站的方法,而无需Lambda

    它演示了带有堆栈实例( 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...

    UNIX环境高级编程_第二版中文

    15.7 消息队列  15.8 信号量  15.9 共享存储  15.10 客户进程-服务器进程属性  15.11 小结  习题  第16章 网络IPC:套接字  16.1 引言  16.2 套接字描述符  16.3 寻址  16.3.1 字节序  16.3.2...

    UNIX环境高级编程(第二版中文)

    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 寻址...

    unix环境编程电子书

    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章...

    UNIX环境高级编程

    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 ...

Global site tag (gtag.js) - Google Analytics