linux 消息队列类型
来源:互联网 发布:facebook自动加人软件 编辑:程序博客网 时间:2024/06/13 14:32
linux消息队列类型不能为0,否则将会报invalid argument错误。测试代码如下,如果发送端循环从0开始将出现错误。
send.cc
/*=============================================================================# Filename : send.cc# Description : 发送端实现# Author : chenqingming chenqingming0710@163.com# create : 2014-03-20 20:48# Last modified : 2014-03-20 20:48=============================================================================*/#include <stdio.h>#include <stdlib.h>#include <sys/ipc.h>#include <sys/msg.h>#include <errno.h>#include <string.h>#include "data_type.hpp"#define SEND_COUNT 1000int main(){ int status = -1; int msg_id = -1; int i; key_t ipc_key = (key_t)-1; //获取键值 ipc_key = get_ipc_key(); if (ipc_key == (key_t)-1) { fputs("get ipc_id fail\n", stdout); exit(1); } //创建消息队列 msg_id = msgget(ipc_key, 0777|IPC_CREAT); if (msg_id == -1) { fputs("create msg fail\n", stdout); exit(2); } //发送消息 msg_struct msg_data; for (i = 0; i < SEND_COUNT; ++i) { msg_data.msg_type = i+1; int j; for (j = 0; j < i + 1; ++j) { msg_data.msg[j] = 'A'; } msg_data.msg[j] = '\0'; //send status = msgsnd(msg_id, (void*)&msg_data, MAX_MSG_LENGTH, 0); if (status == -1) { printf("%s\n", strerror(errno)); fputs("send error\n", stdout); exit(1); } } fputs("send over\n", stdout); exit(EXIT_SUCCESS);}
get.cc
#include <stdio.h>#include <stdlib.h>#include <sys/msg.h>#include <sys/ipc.h>#include "data_type.hpp"#define GET_COUNT 1000int main(){ key_t ipc_id = get_ipc_key(); if (ipc_id == (key_t)-1) exit(1); int msg_id = msgget(ipc_id, 0777|IPC_CREAT); if (msg_id == -1) exit(2); msg_struct msg_data; fputs("start gen msg\n", stdout); while (1) { if (msgrcv(msg_id, &msg_data, MAX_MSG_LENGTH, 0, 0) == -1) exit(2); printf("%ld\n", msg_data.msg_type); //fputs(msg_data.msg, stdout); if (msg_data.msg_type == GET_COUNT - 1) break; } printf("get over :%ld\n", msg_data.msg_type); exit(EXIT_SUCCESS);}
0 0
- linux 消息队列类型
- Linux消息队列编程
- linux消息队列
- linux消息队列操作
- linux IPC-消息队列
- linux消息队列函数
- Linux消息队列操作
- linux 消息队列
- linux IPC-消息队列
- Linux的消息队列
- Linux消息队列
- Linux消息队列
- linux消息队列
- linux消息队列
- Linux消息队列
- linux 消息队列 实例
- linux操作系统消息队列
- linux 消息队列 实例
- autotool总结
- Emmet的高级功能与使用技巧
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
- python十个实战项目
- 分页sql
- linux 消息队列类型
- 基于MVC开发模式的天气预报小Demo
- 理解 公钥加密 与 数字签名 之间的联系与区别
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- Android从入门到精通之编程实现软件界面方法
- 提示找不到arm-linux-gcc 命令
- 使用diff命令制作补丁、patch命令打补丁
- 随机生成一个n bit位的长整数
- hdu 4819 Mosaic (二维线段树)