linux命名管道总结

简介: linux命名管道总结

FIFO,也称为命名管道,它是一种文件类型。

1、特点

(1)FIFO可以在无关的进程之间交换数据,与无名管道不同。

(2)FIFO有路径名与之相关联,它以一种特殊设备文件形式存在于文件系统中。

2、原型

(1)#include <sys/types.h> #include <sys/stat.h>

(2)// 返回值: 成功返回0,出错返回-1

(3)int mkfifo(const char *pathname, mode t mode) ;

其中的 mode 参数与open函数中的 mode 相同。一旦创建了一个 FIFO,就可以用一般的文件I/O函数操作它。当 open 一个FIFO时,是否设置非阻塞标志 (O_NONBLOCK) 的区别:

(1)若没有指定O_NONBLOCK(默认),只读 open 要塞到某个其他进程为写而打开此 FIFO。类似的,只写 open 要阻塞到某个其他进程为读而打开它。

(2)若指定了O_NONBLOCK,则只读 open 立即返回。而只写open 将出错返回 -1如果没有进程已经为读而打开该 FIFO,其errno置ENXIO。

3、

FIFO的通信方式类似于在进程中使用文件来传输数据,只不过FIFO类型文件同时具有管道的特性,在数据读出时,FIFO管道中同时清除数据,并且“先进先出”。


下面的例子将演示使用 FIFO 进行IPC 的过程:


创建一个命名管道

编译结果:黄色的为创建的命名管道

非阻塞运行:

 

编译结果:一直运行

阻塞运行:只读 open 要塞到某个其他进程为写而打开此 FIFO。类似的,只写 open 要阻塞到某个其他进程为读而打开它。

写函数

读函数

读了后等写进程

写了后程序运行

相关文章
|
13天前
|
存储 负载均衡 Linux
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(下)
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(下)
|
13天前
|
消息中间件 Unix Linux
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(上)
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(上)
|
21天前
|
Linux
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
|
21天前
|
Linux
【Linux】匿名管道实现简单进程池
【Linux】匿名管道实现简单进程池
|
21天前
|
Linux
【Linux】进程通信之匿名管道通信
【Linux】进程通信之匿名管道通信
|
1天前
|
Linux Shell
【Linux】命名管道
【Linux】命名管道
|
1天前
|
Linux Shell
【Linux】管道
【Linux】管道
|
21天前
|
Unix Linux
|
21天前
|
消息中间件 Unix Linux
【探索Linux】P.14(进程间通信 | 匿名管道 | |进程池 | pipe() 函数 | mkfifo() 函数)
【探索Linux】P.14(进程间通信 | 匿名管道 | |进程池 | pipe() 函数 | mkfifo() 函数)
29 0
|
Linux Shell
详解linux进程间通信-管道 popen函数 dup2函数
  前言:进程之间交换信息的唯一方法是经由f o r k或e x e c传送打开文件,或通过文件系统。本章将说明进程之间相互通信的其他技术—I P C(InterProcess Communication)。
1519 0