Linux进程间通信——管道

本文介绍了Linux中管道的概念,包括匿名管道pipe和有名管道fifo。匿名管道适用于父子进程通信,有名管道解决了无血缘关系进程的通信问题。管道是半双工的,具有环形队列特点。文章讲解了管道的创建、使用方法及其注意事项,如阻塞、信号处理等,并对比了匿名管道和有名管道的区别。最后提到了其他进程间通信方式,如内存共享映射和socket。
摘要由CSDN通过智能技术生成

管道

  • 什么是管道?
    一个进程连接到另一个进程的一个数据流称为一个“管道”。

匿名管道pipe

  • 用于父子间的通信
  • 管道最大64K,由环形队列组成
  • 需要占用两个文件描述符,分别作为管道读端、写端
  • 管道是半双工的,需要确定通信方向
    父写子读,关闭父读、子写
    子写父读,关闭子读、父写
  • 优点:稳定、经典
pipe函数原型

头文件:<unistd.h>

int pipe(int file_descriptor[2]);

功 能:创建一无名管道
参 数:file_descriptor:文件描述符数组,其中file_descriptor[0]表示读端,file_descriptor[1]表示写端
返回值:成功返回0,失败返回-1

开辟了管道之后如何实现两个进程间的通信呢?比如可以按下面的步骤通信。

在这里插入图片描述
1、父进程调用pipe开辟管道,得到两个文件描述符指向管道的两端。
2、父进程调用fork创建子进程,那么子进程也有两个文件描述符指向同一管道。
3、父进程关闭管道读端,子进程关闭管道写端。父进程可以往管道里写,子进程可以从
4、管道里读,管

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值