Linux之有名管道

Linux的有名管道

        从linux中管道的创建过程我们可以看出,管道只可以在父子或者有血缘关系的
进程中进行通信,因为其以无名文件的形式存在文件系统中。为了克服这个问题,Linux
中发展了有名管道(FIFOS).有名管道以一种特殊的文件设备存在,这样它既有了
管道的功能,同时又有了文件的特点,这样我们就可以通过像操作普通文件那样去操作
管道,从而实现了非父子关系的进程间的通信。
      在linux中我们通过mknod进行创建有名管道:
mknod(char *pathname,mode_t mode,devt dev).
有名管道创建后,我们就可以像操作文件那样,使用fopen打开管道,然后读写。

有名管道注意事项:
1:有名管道必须同时有读写两个进程。如果一个进程试图向一个没有读入端的有名管道写数据
一个SIGPIPE信号就会产生。
2:管道的独立性。所谓的独立性是指这个操作不会被打断。比如如果管道的最大buf是512,那么
在一次读写的时候是不会被打断的,那么如果大于512,则会被分为多次,这样读写就可能会被打断
中间就可能被插入其他进程的数据,从而造成混乱。这个要特别注意。

你可能感兴趣的:(Linux学习)