匿名管道的通信只能在,有血缘关系的进程中,本质就是,子进程会拷贝一份父进程的文件描述符表,父子进程就可以看到操作系统的同一块资源(文件),以这块资源为媒介进行通信。
命名管道,就是以路径为标识符,让两个不相干的进程,看到同一块资源(文件),以这个文件进行通信。
管道文件
mkfifo fifo 创建一个名位fifo的管道文件
这个是LINUX命令,还有个系统调用也叫mkfifo
文件的类型为p,pipe管道的意思,ubuntu为了标识管道文件,特地在文件后边加了一个|
一个文件是 文件的内容 + 文件的属性,但是管道文件是没有内容的,他只有缓冲区。
像匿名管道就是先写到缓冲区,再刷新到文件中,在读取到缓冲区,才能被读端读到。
命名管道,直接就可以使用缓冲区进行通信,不用再刷新到文件中。
系统调用mkfifo
pathname就是要创建的文件名,mode就是要创建文件的权限。