zoukankan      html  css  js  c++  java
  • 管道

    管道(匿名)

    管道的概念

    本质:

    • 内核缓冲区
    • 伪文件(不占用磁盘空间)

    特点:

    • 包含了读端和写端两个部分,对应两个文件描述符
    • 数据从写段流入,读端流出
    • 操作管道的进程被销毁后,管道自动被释放
    • 管道默认是阻塞的

    管道的原理

    内部实现方式:

    • 环形队列

    缓冲区大小:

    • 默认为4k,但可根据实际情况调整

    管道的局限性

    • 数据只能读取一次
    • 数据传输的方向是单向的
    • 适用于有血缘关系的进程间通信

    管道的读写行为

    读操作

    • 有数据:正常度,返回读出的字节
    • 无数据:
      •   (1)写端全部关闭:read解除阻塞,返回0
      •   (2)没有全部关闭:read阻塞

    写操作

    • 读端全部关闭:管道破裂,进程被终止,内核给当前进程发信号SIGPIPE
    • 读端没全部关闭:
      •   (1)缓冲区写满了:write阻塞
      •        (2)缓冲区没有慢:write继续写
  • 相关阅读:
    带你走进Ajax
    基础
    基础
    基础-文字
    C++ part6.5
    操作系统 part4
    操作系统 part3
    计算机网络 part3 HTTP&HTTPS
    计算机网络 part2
    计算机网络 part1 TCP
  • 原文地址:https://www.cnblogs.com/xumaomao/p/11896892.html
Copyright © 2011-2022 走看看