Linux内核中的管道

本文详细介绍了Linux内核中的管道,包括无名管道和命名管道(FIFO),阐述了管道的创建、关闭和使用,以及其在父子进程间通信的应用。管道是Linux进程间通信的一种方式,具有单向通信、固定读写端、半双工等特点。同时,文章还讨论了标准流管道和命名管道的使用,以及相关函数如pipe(), mkfifo(), popen()等的实现细节。" 113600721,10539063,不使用mysqldump复制MySQL数据库,"['MySQL复制', '数据库迁移', 'mysqldump替代方案']
摘要由CSDN通过智能技术生成

 一、介绍关于进程间通信

       Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的进程间通信机制。Linux则把两者继承了下来,关系如下图:

       其中,最初Unix IPC包括:管道、FIFO、信号;System V IPC包括:System V消息队列、System V信号灯、System V共享内存区;Posix IPC包括: Posix消息队列、Posix信号灯、Posix共享内存区。有两点需要简单说明一下:1)由于Unix版本的多样性,电子电气工程协会(IEEE)开发了一个独立的Unix标准,这个新的ANSI Unix标准被称为计算机环境的可移植性操作系统界面(PSOIX)。现有大部分Unix和流行版本都是遵循POSIX标准的,而Linux从一开始就遵循POSIX标准;2)BSD并不是没有涉足单机内的进程间通信(socket本身就可以用于单机内的进程间通信)。事实上,很多Unix版本的单机IPC留有BSD的痕迹,如4.4BSD支持的匿名内存映射、4.3+BSD对可靠信号语义的实现等等。

二、进程间通信中的管道

        1.管道的概述:

           管道(pipe)是Linux中进程间通信的一种方式。

           (1).它只能用于具有亲缘关系的进程之间的通信(即父子进程或兄弟进程之间)。

           (2).它是一个半双工的通信模式,具有固定的读端和写端。

           (3).管道也可以看成一种特殊的文件,对于它的读写也可以使用普通的read()write()等函数。但是她不是普通的文件,并不属于其它任何文件系统,并且只存在于内核的内存空间中。


         2.管道的创建和关闭

            (1).管道基于文件描述符的通信方式,当一个管道建立时,它会创建两个文件描述符fd[0]fd[1],其中fd[0]固定用于读管道,而fd[1]则固定用于写管道,这样就构成了一个半双工的通道。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值