Linux进程间通信—FIFO有名管道
有名管道又称FIFO,是一种特殊的文件。FIFO是能够实现在不同进程下的通信,速度极快。在Linux下面一切皆文件,这让许多操作变得更加简单便捷。
(1)FIFO的创建
FIFO的创建可由下面函数来创建
其中第一个参数*pathname是FIFO创建的路径名,第二参数mode是什么样的读写权限来创建FIFO。
(2)打开FIFO文件
FIFO文件和其他文件一样也是使用open来打开。但是有几点需要注意:
1、FIFO文件不能够用O_RDWR(可读可写)的方式打开,因为一个FIFO如果以可读可写的方式打开,进程本身会读回写入FIFO中的数据,通常我们使用FIFO是为了实现单向数据的传输。
2、在使用open打开FIFO文件的时候,在选择打开的mode时候,如果选择的是O_NOBLOCK则当open函数打开FIFO是非阻塞的,否则是阻塞的。
(3)关于FIFO的阻塞问题
对于以只读方式(O_RDONLY)打开的FIFO文件,如果open调用是阻塞的(即第二个参数为O_RDONLY),只有当另一个进程以写方式打开同一个FIFO文件,否则open不会返回句柄;如果open调用是非阻塞的的(即第二个参数为O_RDONLY | O_NON