命名管道基本概念:
匿名管道没有名字,因此只有血缘关系的进程间才可以通信,命名管道的提出就是为了克服这个限制。命名管道是一个设备文件,因此,即使进程间无血缘关系,只要可以访问该路径,就能够通过FIFO通信。FIFO总是按照先进先出的原则工作,第一个被写入的数据将首先从管道中读出来。
命名管道的创建与读写:
Linux下有两种方式创建命名管道:一是在shell下交互建立一个命名管道,而是在程序中使用系统函数建立命名管道。shell方式下可以使用mknod和mkfifo命令。
命名管道和匿名管道的使用方法基本一样,只是命名管道在使用前必须先调用open()将其打开。因为命名管道是存在于硬盘上的文件,而匿名管道是在内存中的特殊文件。
mknod是比较老的函数,而使用mkfifo更加简单和规范,所以尽量使用mkfifo创建管道。
调用open()打开命名管道的进程可能会被阻塞,但如果以同时读写的方式打开则一定不会被塞,
但如果以只读或者只写的方式打开可能会被阻塞。
write端程序:
read端程序:
运行结果:
转载于:https://blog.51cto.com/10548202/1826255