U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 土豆PE使用教程 >

Linux进程间通信第二讲 管道PIPE FIFO

来源:http://www.tudoupe.com时间:2022-02-26

管道是最古老的IPC之一, 以管道文件作为媒介进行传输

其中分为有名管道和无名管道

无名管道的管道文件在文件系统中不可见, 而有名可见

管道通信实质上是内存通信, 由内核负责

一、无名管道(PIPE)

只能用于亲缘关系的进程(父子 、 兄弟), 由它的机制决定

无名管道的管道文件在文件系统中不可见

使用方法:

1、父进程调用pipe() 函数创建无名管道, 无名管道有读端 、 写端

2、用fork产生子进程, 子进程自动继承父进程的描述符 ,也就是 无名管道的 读端 、 写端

3、这是一种半双工通信, 一条管不能同时又进又出,想 读,就把写关了,另一边就把写关了,读就开 , 如下图所示

1.1 父子通信

首先父进程创建一个无名管道 , 有读、写描述符

然后fork 后产生一个子进程,它和父进程称为父子进程

这个子进程继承了父进程的读、写描述符

下面代码,子进程是写,所以要关掉读 ; 父进程是读,所以要关掉写

代码如下(pipe、父子进程):

1.2 兄弟通信

父进程创建了 读、写 描述符

fork 两次后产生了两个子进程(互为兄弟进程),它们都继承父进程的 读、写 描述符

在这里,父进程不参与通信,因此父进程的读、写描述符都需要关闭掉

下面的代码,子1是写,所以关掉读 ; 子2是读,所以关掉写

代码如下(pipe、兄弟进程):

二、有名管道(FIFO)

用于所有进程的通信,不局限父子、兄弟进程

有名管道在文件系统中是可见,虽然可见, 但是是在内存当中

使用方法:

1、进程1创建一个有名管道文件,可以在文件系统中看到, 然后和它通信的进程2打开这个文件即可通信

2、没有读、写描述符, 这里只有文件描述符,用它进行读或写

3、这里也是一个半双工通信

例如进程1创建管道文件、然后打开文件获取文件描述符、接着进行用描述符来读管道文件

代码如下(fifo、读):

而进程2不需要创建管道文件, 打开进程1创建的并获取文件描述符、接着进行用描述符来写管道文件

代码如下(fifo、写):

Linux进程间通信第二讲 管道PIPE FIFO - 知乎 (zhihu.com)

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息