管道通信的特点
1.管道通信是单向的,有固定的读端和写端。
2.数据被进程从管道读出后,在管道中该数据就不存在了
3.当进程去读取空管道的时候,进程会阻塞;
4.当管道往满管道写数据时,进程会阻塞;
5.管道的容量是64KB(#define PIPE_BUFFERS 16 include/linux/pipe_fs_i.h)
区别:
- 无名管道是无名的,有名管道是有名的;
- 无名管道只能用于父子进程或兄弟进程之间的通信,而有名管道可用于任意两进程之间通信;
- 无名管道是无形的,即无名管道的 inode 结构不是在磁盘上存储的,而是临时生成的,而有名管道的 inode 结点在磁盘上。