消息队列及管道
来源:互联网 发布:keil流水灯c语言程序 编辑:程序博客网 时间:2024/05/02 04:57
正好用到了,记下来
1. 消息队列
首先要定义符合要求的struct
typedef struct{ int msg_type; char msg_data[128];}MSG_DEF;
先来发送消息
MSG_DEF send_msg;int key=8000, id;id = msgget(key, IPC_CREAT | 0660);//不存在就创建,存在就返回msgsnd(id, &send_msg, sizeof(send_msg.msg_data), 0);
再来接收消息
MSG_DEF recv_msg;int key=8000, id;id = msgget(key, IPC_CREAT | 0660);//不存在就创建,存在就返回msgrcv(id, &recv_msg, sizeof(recv_msg.msg_data), 0, IPC_NOWAIT);//非阻塞
2. 管道
这里关注有名管道
先发送,注意open时模式的选择(O_NONBLOCK),可能会导致open file:: No such device or address,具体原因未细究
#define FIFO_SERVER "my_fifo"unlink(FIFO_SERVER);if(mkfifo(FIFO_SERVER, O_CREAT | O_RDWR | 0666) != 0) perror("mkfifo:");fd = open(FIFO_SERVER, O_WRONLY);if(fd< 0) perror("open file:");ret = write(fd, filename, strlen(filename));printf("send filename:[%s][%d]\n", filename, ret);close(fd);
再来接收
char filename[128] = {0};int fd = 0;fd = open(FIFO_SERVER, O_RDONLY | O_NONBLOCK);read(fd, filename, sizeof(filename));printf("recv filename:[%s]\n", filename);close(fd);
- 消息队列及管道
- 管道 信号 消息队列
- 管道/消息队列/共享内存
- 消息及消息队列
- 消息队列和管道的区别(转载)
- 管道/FIFO/共享内存/消息队列/信号
- 消息队列和管道的区别
- 消息队列与管道的区别
- Day31_管道,共享内存,消息队列
- 消息队列和管道的区别
- 消息队列和管道的区别(转载)
- 消息队列和管道的区别
- 消息队列和管道的区别(转载)
- 进程间通信--管道、消息队列
- day_13_管道、共享内存、消息队列
- 管道 消息队列 共享内存的优缺点
- redis事务、管道及消息通知探究
- UNIX下进程学习之管道和消息队列
- jquery.validate.js 应用示例
- Linux系统调用--进程管理(1)
- 电脑工作人员的职责
- Large-scale Parallel Collaborative Filtering for the Netflix Prize
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(8)-DbSession线程内唯一
- 消息队列及管道
- yum和apt-get用法及区别
- java中toString()的用法
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(9)-TT模板的学习
- Iterator和Enumeration区别
- Matlab常用命令
- Linux协议栈代码阅读笔记(二)网络接口的配置
- hello
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(10)- VSS源代码管理