Linux进程间通信机制的一些细节

来源:互联网 发布:seo原创软文代写 编辑:程序博客网 时间:2024/05/05 02:10

前言

本文介绍Linux进程间通信机制的一些细节,将会持续更新。

管道

以下内容可以使用”man 7 pipe”查询到原文说明

  • Pipe Capacity(管道容量)
    write()写满管道,指的是把该管道容量写满,而不是PIPE_BUF,如果管道写满,write()将会阻塞或者失败,这取决于O_NONBLOCK标志是否设置。
    在Linux 2.6.11版本之前,管道容量的大小跟系统一个页大小相同(例如:ide86的页大小是4096字节),自从Linux 2.6.11版本开始,管道容量则为65536字节
  • PIPE_BUF(管道缓冲区)
    该缓冲区大小主要是决定了写多少字节的一次操作是原子操作,即当要写入的数据量不大于PIPE_BUF时,linux将保证 写入的原子性 ;当要写入的数据量大于PIPE_BUF时,linux将不再保证写入的原子性,内核可能会穿插其他有血缘关系的进程写入管道的数据于其中。
    POSIX.1-2001 要求PIPE_BUF至少有512字节,在Linux上,该大小为4096字节。可通过 cat /usr/include/linux/limits.h |grep PIPE_BUF 进行查看

参考博文:http://www.tuicool.com/articles/i6Bvu2(管道读写规则和Pipe Capacity、PIPE_BUF)

0 0
原创粉丝点击