进程间通信介绍
早期UNIX进程间通信方式
无名信号(pipe)
有名管道(fifo)
信号(signal)
System V IPC
共享内存(share memory)
消息队列(message queue)
信号灯集(semaphore set)
套接字(socket)
无名管道特点
无名管道具有以下特点:
只能用于具有亲缘关系的进程之间的通信
单工的通信模式,具有固定的读端和写端
无名管道创建时会返回两个文件描述符,分别用于读写管道
无名管道创建 - pipe
#include<unistd.h>
int pipe(int pdf[2]);
成功时返回0,失败时返回EOF
pdf 包含两个元素的整形数组,用来保存文件描述符
pdf[0]用于读管道,pdf[1]用于写管道
读无名管道
写端存在(至少有一个进程可以通过无名管道写数据)
有数据 read返回实际读取的字节数
无数据 进程读阻塞
写端不存在
有数据 read返回实际读取的字节数
无数据 read返回0
写无名管道
读端存在(至少有一个进程可以通过文件描述符读取管道内容)
有空间 write返回实际写入字节数
无空间 进程写阻塞
读端不存在
有空间 管道断裂!
无空间 管道断裂!
进程间通信(linux进程与线程学习笔记)
最新推荐文章于 2023-04-23 18:21:33 发布
本文深入解析了早期UNIX系统中无名管道(pipe)、有名管道(fifo)、信号通信以及SystemV IPC(共享内存、消息队列和信号灯集)的工作原理。特别介绍了无名管道的特点,包括其单工通信和文件描述符使用。通过实例演示了如何创建和使用无名管道进行进程间通信的过程。
摘要由CSDN通过智能技术生成