FIFO,又称作命名管道(named pipe),它是Linux系统中用于进程间通信的一种方法。

FIFO和pipe的区别在于:

FIFO在文件系统中有对应的inode,可以通过ls命令查看。

sh-3.2# ls -lhF ./fifo_file

100 prwxrwxrwx 1 root root 0 Jan  1  1970 ./fifo_file|

sh-3.2#

正因为它有一个名字,所以任何进程都可以访问它,所以FIFO可用于任意两个进程之间的通信。

pipe没有名字,在现有文件系统中无法查看到它的存在。

它只能用于父子进程、兄弟进程等具有血缘关系的进程间通信。

创建FIFO的方法如下:

1. 调用umask系统调用来设定创建文件的权限,

#include

#include

mode_t umask(mode_t mask);

2. 调用unlink系统调用先删除已经存在的fifo,

#include

int unlink(const char *pathname);

3. 调用mkfifo库函数去创建一个FIFO文件,

#include

#include

int mkfifo(const char *pathname, mode_t mode);

或者可以通过调用mknod系统调用并且指定参数mode为S_IFIFO也可以创建一个FIFO文件,

#include

#include

#include

#include

int mknod(const char *pathname, mode_t mode, dev_t dev);

注意:

1. 使用FIFO进行通信,每次传输的数据要限定在PIPE_BUF之内;

2. 对于FIFO的访问就像访问正规文件(regular file)一样,可以使用open/read/write/close等系统调用进行访问。

使用FIFO的应用有:

1. 单纯的生产者/消费者问题,一个进程读数据,一个进程写数据;

2. 实现client/server架构的程序,客户端和服务器端通过FIFO进行通信。

也许还有很多其它的应用场景,待遇到时再具体问题具体分析。

关于FIFO,可能还有很多细节问题,再看吧!

linux fifo 视频,Linux FIFO学习相关推荐

  1. linux mint视频,Linux Mint 20.1 beta 发布,新增免费视频播放器

    经过六个月的开发,Linux Mint 20.1" Ulyssa"的 Beta 版于近日发布了.Mint 20.1 是一个长期支持(LTS)版本,基于 Ubuntu 20.04 L ...

  2. linux elf 视频,linux 实例讲解elf文件

    elf是一种文件格式,用于存储linux程序,它内部有什么信息呢?大概包括编制好的计算机指令,数据,计算机在需要的时候把这个文件读取到内存中,cpu就可以从内存中一条一条的读取指令来执行.要想明白el ...

  3. openssl linux更新视频,Linux下为OpenSSL安装更新

    我们在为微信部署小程序,或者安装一些应用等等需要升级openssl到指定的版本才可使用.centos系统自带的版本过低,而使用yum升级也升级不到最新的版本上.下面以升级到openssl-1.1.0e ...

  4. linux运维视频教程 linux培训视频

    马哥2016全套视频 linux运维视频教程 linux培训视频 http://edu.51cto.com/course/course_id-5524.html http://edu.51cto.co ...

  5. 尚硅谷Linux视频学习建议贴及linux全套视频,运维版本180G高质量视频教程免费下,linux教程

    纯视频版本: 链接:https://pan.baidu.com/s/12lJCAn9MFssFEyx8Dmu5Eg  提取码:5fr7 含源码版本: 链接:https://pan.baidu.com/ ...

  6. 命名管道(FIFO) Linux进程进程间的通信之命名管道(FIFO)

    Linux进程进程间的通信之命名管道(FIFO) 命名管道(FIFO),它和一般的管道一样.都是作为中间的邮递员来实现两个进程间的通信交流. 命名管道(FIFO)有几个特点: 1.命名管道(FIFO) ...

  7. AVI音视频封装格式学习(四)——linux系统C语言AVI格式音视频封装应用

    拖了很久的AVI音视频封装实例,花了一天时间终于调完了,兼容性不是太好,但作为参考学习使用应该没有问题.RIFF和AVI以及WAV格式,可以参考前面的一些文章.这里详细介绍将一个H264视频流和一个2 ...

  8. 国嵌linux内核编程,linux内核--那些年看国嵌视频学习

    1.linux系统构成 由用户空间和内核空间构成.其中用户空间由应用程序和C库:内核空间由系统调用接口.kernel.架构代码.硬件设备平台 为什么linux系统会被划分为用户空间和内核空间?处于安全 ...

  9. Linux磁盘与文件系统管理学习笔记

    0:序 系统管理员很重要的任务之一就是管理号自己的磁盘文件系统,每个分区的大小分配,不能太大,也不能太小,太大浪费空间,太小不够用,该小节记录如何制作文件系统,和怎么样分区,格式化,等. 1:一下借用 ...

最新文章

  1. 熬了几个大夜,学完一套985博士总结的OpenCV学习笔记(20G高清/PPT/代码)
  2. 人工智能皇冠上的明珠:自然语言处理简介、最新进展、未来趋势
  3. apache httpclient 工具类_Httpclient实现文件上传、文件下载看这篇文章就够了
  4. 去掉DataGridView最后一行的空白行,删除空白行
  5. 计算机硬件基础知识微盘,第1章 电脑硬件基础知识.pdf
  6. mnist tensorrt 运行_TensorRT学习笔记(三)
  7. Linux下安装配置JDK6
  8. 局域网内的服务器搭建(VMware)
  9. OverFeat 阅读笔记
  10. CCNA学习-路由器交换机的管理配置
  11. 第五章 定积分及其应用
  12. Android的基本资源访问
  13. Aspose.Word企业案例:Progetto Adele 使用 Aspose API 从预定义模板自动生成 Word 和 PDF 文件
  14. Android Q访问公共外部存储受限
  15. 为什么需要云计算机,为什么需要云计算?
  16. 前端项目实战95-数组遍历继续处理
  17. 【最短路径树】 [USACO09JAN]Safe Travel G
  18. 怎样修改图片kb大小?如何压缩图片jpg格式?
  19. 4月跳槽进字节跳动了,面试真简单...
  20. PCB板线路与阻焊工艺细分,如何做一块好看实用的板子?

热门文章

  1. AHK 中 % 符号的用法
  2. Linux Setuid和Setgid
  3. 51CTO独家调查:谁是十年最具影响力厂商
  4. 比特币和比特币现金就隐私保护展开辩论
  5. TCP/IP状态详解
  6. 程序员之网络安全系列(三):数据加密之对称加密算法
  7. 使用Quartus建立第一个FPGA工程
  8. 迷途指针,从百度百科上摘抄的,语言很幽默
  9. 计算几个数相加和为16
  10. DJANGO获取用户访问IP