2020-08-27 Linux 的进程间通信:管道

linux的管道是什么?

--pipe是一种跨进程通信的方式。分为匿名管道和命名管道。分别可以由“|”操作符和“mknod”,"mkpipe"命令来实现。其本质是一处连续的内存空间。因为linux的特性,被映射成为一个文件。匿名管道依赖于两个进程间的亲缘关系,也就是说,子进程需要通过fork操作还获取父进程创建的pipe的文件操作符(fd)。命名管道则跳出了这一限制,可以动态地为两个毫无关联的进程提供读写操作。管道的空间(PIPE_SIZE)有限,如果需要写的数据超过了空间大小,那么写操作会被阻塞。如果管道没有数据,那么读操作会被阻塞。向管道写入数据时,每次操作的数据长度(PIPE_BUF)决定了写入操作一次write()最多可以写入的数据容量(一个page,通常是4000byte)。如果数据大于PIPE_BUF,那么写入就不是原子操作。推荐用法是用它进行单工通信。
Linux 的进程间通信:管道

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容