本文主要是介绍嵌入式学习day17,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
FIFO
FIFO也称命名管道,它是一种文件类型
特点
- FIFO可以在无关的进程之间交换数据,与无名管道不同
- FIFO有路径名与之相关联,它以一种特殊设备文件形式存在于文件系统中。
- FIFO的通信方式类似于在进程中使用文件来传输数据,只不过FIFO类型为文件同时具有管道的特性。在数据读出时,FIFO管道中同时清除数据。
原型
#include <sys/stat.h>
//返回值:成功返回0,失败返回-1
int mkfifo(const char *pathname,mode_t mode);
具体样例可以参考我在linux章节的进程通信(一)中的内容。
消息队列
消息队列是消息的连接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。
特点
- 消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。
- 消息队列独立于发送与接收进程,进程终止时,消息队列及其内容并不会被删除。
- 消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。
原型
#inlcude <sys/msg.h>//创建或打开消息队列,成功返回队列ID,失败返回-1
int msgget(key_t key,int flag);//添加消息:成功返回0,失败返回-1
int msgsnd(int msqid,const void *ptr,size_t size,int flag);//读取消息:成功返回消息数据的长度,失败返回-1
int msgrcv(int msqid,void *ptr,size_t size,long type,int flag);//控制消息队列,成功返回0,失败返回-1
int msgctl(int msqid,int cmd,struct msqid_ds *buf);
具体样例可以参考我在linux章节的进程通信(一)中的内容。
这篇关于嵌入式学习day17的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!