Linux -- 管道

进程间通信 IPC

Linux 主流 IPC:

管道、信号量、共享内存、消息队列、套接字

管道(Pipe)

1. 管道通用特点

  • 半双工(单向):数据只能一个方向流动

  • 面向字节流

  • 内置同步互斥机制

  • 命令行 | 就是无名管道

2. 无名管道(pipe)

  • 创建:int pipe(int fd[2])

  • 特点

    1. 没有名字,只能通过文件描述符使用

    2. 只能用于亲缘进程(父子 / 兄弟)

    3. 随进程销毁而消失

    4. fd 0 读端,fd 1 写端

3. 有名管道(FIFO)

  • 创建命令:mkfifo 管道名

  • 特点(必背)

    1. 有文件名,存在于文件系统

    2. 可用于任意进程(无亲缘关系也可)

    3. 关闭进程后,管道文件依然存在

  • 使用:open → read/write → close

管道读写规则

  • 读端不存在:写端收到 SIGPIPE 信号,默认终止进程

  • 读端有缓存:写满则阻塞

  • 写端不存在:读端读完返回 0

  • 管道为空:读阻塞

相关推荐
deadbird11 分钟前
Xbox 无线适配器 Linux 设置指南
linux
Menahem21 分钟前
解决 SSH 报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
运维·ssh·github
wait a minutes34 分钟前
Ubuntu 升级后 NVIDIA 驱动修复指南
linux·运维·ubuntu
|_⊙37 分钟前
Linux 信号
运维·服务器·前端
xdpcxq10291 小时前
基于Blazor实现的跟踪光伏智能运维平台
运维
bush42 小时前
嵌入式linux学习记录十二,mmap
java·linux·学习
快乐肚皮2 小时前
【无标题】
服务器·网络·tcp/ip
似水এ᭄往昔2 小时前
【Linux系统编程】--进程概念
linux·运维·服务器
Dxy12393102162 小时前
Linux 如何关闭关不掉的进程
linux·运维·chrome
小徐敲java3 小时前
Linux读取串口实时数据
linux·运维·服务器