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

  • 管道为空:读阻塞

相关推荐
哦哦~9212 小时前
揭示多功能合成界面,增强致密厚复合电极的机械和电化学性能
服务器·网络·人工智能
宇宙realman_9992 小时前
DSP28335-FlashAPI使用
linux·前端·python
华清远见IT开放实验室2 小时前
STM32+Linux双体系,零基础玩转嵌入式
linux·stm32·嵌入式硬件
重生的黑客2 小时前
Linux 进程状态详解:从理论到实践,僵尸进程与孤儿进程
linux·运维·服务器
脆皮炸鸡7552 小时前
进程的程序替换
linux·经验分享·笔记·vim·学习方法
划水的code搬运工小李3 小时前
ubuntu下使用opencode
linux·运维·ubuntu
爱学习的小囧3 小时前
ESXi 环境 NFSv3 与 NFSv4.1 哪个更稳?深度对比 + 选型指南 + 运维全教程
运维·服务器·网络·虚拟化
ZPC82103 小时前
Ubuntu 实时性优化(专属定制版,适配 fast_shm 通信)
linux·数据库·postgresql
郝学胜-神的一滴3 小时前
epoll 边缘触发 vs 水平触发:从管道到套接字的深度实战
linux·服务器·开发语言·c++·网络协议·unix