/* 发送消息队列 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ipc.h>
#include <sys/msg.h>

struct mymsg
{
long mtype; /* message type, must be > 0 */
char mtext[32];
};

#define KEY (key_t)0x1fff
int
main ( int argc, char *argv[] )
{
key_t key;
int msgid;
int res;
key = KEY;
struct mymsg msg;

printf ("发送给解析进程......\n");
strcpy (msg.mtext, "haha");

/* 创建消息队列 */
msgid = msgget (key, 0666 | IPC_CREAT);
if (msgid == -1)
{
perror ("msgget");
}
msg.mtype = 1;

res = msgsnd (msgid, &msg, sizeof(struct mymsg), 0);
printf ("fa ok msg.mtext = %s\n", msg.mtext);

return 0;
}

========================================================

/* 接收消息队列 */

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

struct mymsg
{
long mtype; /* message type, must be > 0 */
char mtext[32]; /* message data */
};

#define KEY (key_t)0x1fff
int main ( int argc, char *argv[] )
{
key_t key;
int msgid;
int res;
key = KEY;

struct mymsg msg;
/* 创建消息队列 */
msgid = msgget (key, 0666 | IPC_CREAT);
if (msgid == -1)
{
perror ("msgget");
}
msg.mtype = 1;

/* libnids抓包信息 */
int i=1;
while(i--)
{
res = msgrcv (msgid, &msg, sizeof(struct mymsg), 0, 0);
printf ("shou ok, msg.mtext = %s\n", msg.mtext);
}

return 0;
}

==========================================================

/*删除消息队列*/

#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

/* 消息队列通信的key */
#define KEY (key_t)0x1fff

int rmqueue(key_t key)
{
int msgid, res;

msgid = msgget (key, 0);
res = msgctl(msgid, IPC_RMID, 0);
return 0;
}

int main ( int argc, char *argv[] )
{
key_t key;

key = KEY;
rmqueue(key);

return 0;
}

==========================================================

/* 获取消息队列的状态信息 */

#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/msg.h>

#define NIDS_PRO_KEY (key_t)0x1fff

int main()
{
key_t key;
key = NIDS_PRO_KEY;
int id = msgget(key,0);
if (id == -1) perror("shmget"),exit(-1);
struct msqid_ds ds;
msgctl(id,IPC_STAT,&ds);
printf("key=%x\n",ds.msg_perm.__key);
printf("mode=%o\n",ds.msg_perm.mode);
printf("current total size=%d\n",ds.__msg_cbytes);
printf("current msg count=%d\n",ds.msg_qnum);
printf("system max allow msg size=%d\n",ds.msg_qbytes);
}

linux消息队列相关操作的更多相关文章

  1. linux消息队列操作

    对消息队列的操作无非有以下三种类型: 1. 打开或创建消息队列消息队列的内核持续性要求每一个消息队列都在系统范围内相应唯一的键值,所以,要获得一个消息队列的描写叙述字,仅仅需提供该消息队列的键值就可以 ...

  2. php中对共享内存,消息队列的操作

    http://www.cnblogs.com/fengwei/archive/2012/09/12/2682646.html php作为脚本程序,通常生命周期都很短,如在web应用中,一次请求就是ph ...

  3. linux消息队列编程实例

    转自:linux 消息队列实例 前言: 消息队列就是一个消息的链表.可以把消息看作一个记录,具有特定的格式以及特定的优先级.对消息队列有写权限的进程可以向其中按照一定的规则添加新消息:对消息队列有读权 ...

  4. Linux下mysql相关操作

    Linux下mysql相关操作 1.创建MySQL mysql -u root -p create user 'username'@'%' identified by 'password'; %可以选 ...

  5. Linux下 svn相关操作

    Linux下 svn相关操作 一.首先看看svn安装的位置: 命令: find / -name svn /var/svn :表示安装目录 /user/bin/svn :表示命令目录 可以看到的是svn ...

  6. LINUX消息队列实战之一

    前言 能说能抄能论皆不算,能写能打才是真功夫. 唠叨 反正我也是一个孤独的程序猿,多说一些奇奇怪怪的唠叨也无妨,第一次写消息队列,书本的东西和实战很不同,根据实战总结的一些注意事项会和大家分享,也敲打 ...

  7. linux下进程相关操作

    一.定义和理解 狭义定义:进程是正在运行的程序的实例. 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动. 进程的概念主要有两点: 第一,进程是一个实体.每一个进程都有它自己的 ...

  8. linux消息队列通信

    IPC机制 进程间通信机制(Inter Process Communication,IPC),这些IPC机制的存在使UNIX在进程通信领域手段相当丰富,也使得程序员在开发一个由多个进程协作的任务组成的 ...

  9. Linux TCP队列相关参数的总结 转

        在Linux上做网络应用的性能优化时,一般都会对TCP相关的内核参数进行调节,特别是和缓冲.队列有关的参数.网上搜到的文章会告诉你需要修改哪些参数,但我们经常是知其然而不知其所以然,每次照抄过 ...

随机推荐

  1. RocksDB

    RocksDB RocksDB is a high performance[1][2][3][4][5] embedded database for key-value data. It is a f ...

  2. OEM7GRUB 0.4.4 2009-11-18

    windows7电脑重装系统后, 启动不了, 提示这个错误: Error: OEM7GRUB 0.4.4 2009-11-18...... 解决办法: 用PE系统进入后, 运行DiskGenius软件 ...

  3. HTML——input

    一个简单的HTML表单,包含两个文本输出框和一个提交按钮: <form action="form_action.asp" method="get"> ...

  4. view上下抖动特效

    shake.xml <?xml version="1.0" encoding="utf-8"?> <translate xmlns:andro ...

  5. 使用log4j将不同级别的日志信息输出到不同的文件中

    使用log4j.xml xml格式的配置文件可以使用filter. 例如想只把log4j的debug信息输出到debug.log.error信息输出到error.log,info信息输出到info.l ...

  6. Android蓝牙通讯【转】

    本文转载自:http://blog.csdn.net/vnanyesheshou/article/details/51554852 随着可穿戴设备的流行,研究蓝牙是必不可少的一门技术了. 总结了下蓝牙 ...

  7. 图解mysql join

    原文:http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins 这个图文解释mysql join的各种技 ...

  8. JQuery UI - resizable调整区域大小

    JQuery UI - resizable   ·概述 resizable插件可以让选中的元素具有改变尺寸的功能. 官方示例地址:http://jqueryui.com/demos/resizable ...

  9. swoole_table

    Memory Swoole提供了7个内存操作的模块,在多进程编程中可以帮助开发者实现一些特殊的需求. swoole_table 是基于共享内存和锁实现的超高性能,并发数据结构

  10. PC样式reset参考

    /* html5doctor.com Reset Stylesheet */ * { padding:; margin:; list-style: none; } html, body, div, s ...