fifo - 先进先出的特殊文件, 又名管道
描述 (DESCRIPTION)
一个 FIFO 特殊 文件 (又名 管道) 同 管道线 相似, 但是 它是 作为 文件 系统 的一部分 访问的. 可以 有 多个 进程 打开它 以供 读写. 当 进程 通过 FIFO 交换 数据的时候, 内核 在内部 传送 所有 数据 而 不会 把它 写入 文件 系统, 也就是说 FIFO 特殊 文件 在 文件 系统 中 没有 任何 内容, 文件 系统 项 只是 作为 进程 可以 用文件 系统 中的 一个 名字 来 访问 管道 的 一个 参照点.
内核 会 为 至少 有 一个 进程 打开 了的 FIFO 特殊 文件 维护 并且 也只 维护 一个管道 对象. 在 数据 传给 FIFO 之前, FIFO 的 两端 (读 和 写) 必须 同时 打开. 一般 来说 打开 FIFO 会 阻塞 直至 另一端 也 打开.
一个 进程 可以 以 非阻塞 模式 打开 一个 FIFO. 这种 情况下, 即使 写端 没有 打开, 打开 读端 还是 会 成功, 但是, 如果 读端 没有 打开, 打开 写端 会 失败, 并且 得到一个 ENXIO (设备 或 地址 不存在).
在 Linux 下, 不管 是 阻塞 还是 非阻塞 模式, 打开 一个 FIFO 用作 读 和 写 都会成功. POSIX 关于 这种 情况 没有 定义. 这个 可以 用来 在 读端 没有 打开 的 情况下 打开 写端. 一个 进程 在 同时 用 FIFO 的 两端 来 和 自己 通信 的 时候 要 特别注意 以防 死锁.
注意 (NOTES)
当 一个 进程 企图 向 读端 没有 打开 的 FIFO 写 数据 的 时候, 进程 会 收到 一个 SIGPIPE 信号. FIFO 特殊 文件 可以 用 mkfifo(3) 来 创建 并且 ls -l 会 给它 一个 特殊 的 标记.
fifo - 先进先出的特殊文件, 又名管道的更多相关文章
- [apue] FIFO:不是文件的文件
众所周知,FIFO中文译为命名管道,是PIPE的升级版.而PIPE是管道,系统提供的一种进程间通讯方式,FIFO与PIPE有以下方面不同: 1) FIFO需要先在文件系统创建(mkfifo),之后使用 ...
- python使用deque实现fifo(先进先出)
#2:deque还提供了append 和pop方法,在序列的两端都能以相同的速度执行#例子2:使用deque实现fifo(先进先出),如下:from collections import dequei ...
- Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/Pipe
目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...
- Linux常用基本命令:grep-从文件或者管道中筛选匹配的行
grep命令 作用:从文本文件或管道数据流中筛选匹配的行及数据,配合正则表达式一起使用,功能更加强大. 格式: grep [options] [pattern] [file] 1,匹配包含" ...
- Linux笔记之如何分割文件或管道流:split
一.简介 在Linux中合并文件可以使用cat命令,后面跟上要合并的文件然后重定向到一个新的文件中即可,甚至可以追加合并.但如果要将一个大文件分割为多个小文件应该如何操作呢? 在Linux的coreu ...
- LINUX 文件/组/帮助/权限/文件压缩/管道
Linux文件/目录详解 常用文件路径的作用 /var/log/messages 系统类的日志文件 /var/log/secure 登录日志文件 /var/spool/cron 定时任务目录 /etc ...
- 队列Queue FIFO先进先出 栈Stack FILO先进后出
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 【读书笔记】管道和FIFO
管道 提供一个单路(单向)数据流,可以为两个不同进程提供进程间的通信手段 #include <unistd.h> ]); 返回两个文件描述符,fd[0](读) 和 fd[1](写) 管道间 ...
- Linux进程间通信之管道(pipe)、命名管道(FIFO)与信号(Signal)
整理自网络 Unix IPC包括:管道(pipe).命名管道(FIFO)与信号(Signal) 管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道 ...
随机推荐
- 《OD学spark》20161022
一.Spark Core 1. 什么是Spark Shuffle Wide Dependencies *ByKey: groupByKey,reduceByKey 关联操作:join,cogroup ...
- bzoj1010 玩具装箱
玩具装箱 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具, ...
- Android代码笔记
1. 如何监听Android的短信收发,自动填充验证码? getContentResolver().registerContentObserver(Uri.parse(SMS_URI_ALL), tr ...
- jpanel使用布局管理器时,setsize会失效
布局管理器会自动根据容器里面的控件大小自动调整size和位置 如果想设置容器的大小和位置,可以使用setPreferredSize方法.
- 分层图最短路 【bzoj1579】[Usaco2009 Feb]Revamping Trails 道路升级
1579: [Usaco2009 Feb]Revamping Trails 道路升级 Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M< ...
- HTTP的学习记录(二)头部
本文主要讲一些 HTTP头部的信息 首先看一段 惊为天人 的文章. 来自于 <淘宝技术这十年> 你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了www.taobao.com.这时你 ...
- JPA规范基础 ppt教程
https://wenku.baidu.com/view/5ca6ce6a1eb91a37f1115cee.html
- CONCAT substr group_concat find_in_set
(SELECT p.*,(SELECT CONCAT(m.name,m.id) FROM service_fastfix_category m WHERE m.id=SUBSTR(p.id,1,4)) ...
- 【JavaEE】WebService到底是什么?
一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...
- <Linux系统uname命令用法>
uname命令:操作系统信息的显示 uname 命令主要用于显示操作系统的信息,包括版本.平台的信息. 它的参数主要有以下: -a 显示全部信息 -s 显示内核名称 -n 显示主机名 -r 显示当前系 ...