无名管道通讯编程

创建无名管道用于父子间进程通信。

1、无名管道概念:无名管道又称pipe,是Linux所支持的IPC方式的一种,它具有以下特点:

1)只能用于具有血缘关系的进程之间。

2)属于半双工的通信模式,具有固定的读端和写端

3)是一种特殊的文件,存在于内存中,可通过read、write对其操作。

2、无名管道的用法

因为pipe存在于内存中,所以无法像操作普通文件那样通过指定路径来打开文件。通常的做法是在父进程中创建管道,再创建子进程。由于子进程继承了父进程打开的文件描述符,所以父子进程就可以通过创建的管道进行通信。

为了在父进程中创建管道,需要先定义一个包含两个元素的整型数组,用来存放管道读端和写端对应的文件描述符。该数组在创建管道时作为参数传递。数组的第一个元素固定代表管道的读端,第二个元素代表写端。对于一个进程来说,只会用到其中一个。

3、创建一个无名管道--pipe

头文件:#include<unistd.h>

原型:int pipe(int fd[2])

参数说明:fd[2]:管道的2个文件描述符,管道创建后,可以直接操作这两个文件描述符,其中fd[0]代表读端(管道头),fd[1]代表写端(管道尾)

返回值:成功返回0,失败返回-1.

 

posted on   gary_123  阅读(325)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示