进程间通信——有名管道(FIFO)

1、何谓进程间通信?

多个进程之间数据相互交换称为进程间通信。

2、进程间通信的方式都有哪些?

(1)信号
(2)管道
(3)信号量
(4)消息队列
(5)共享存储(共享内存)
(6)套接字

信号在之前的博客已经讲过了,今天重点是说一下管道中的有名管道。

3、管道

管道分为两种:
(1)半双工通信:半双工通信是指通信双方都能收发消息,但不能同时进行收和发的工作方式。
(2)全双工通信:全双工通信是指通信双方可同时收发消息的工作方式。

4、管道原理

这里写图片描述

从图中可以看出,A、B两个进程中,A进程向管道中写数据,B进程从管道中读数据,这也就是管道的原理。

5、管道操作

(1)有名管道:应用于任意两个进程之间数据的单向传递。
创建: 命令方式mkfifo、函数方式mkfifo()
打开: open
写数据:write
读数据:read
关闭: close

(2)有名管道:在文件目录树中有一个文件标示(管道文件),实际不占磁盘空间,数据缓存在内存上。

(3)阻塞运行函数:函数调用以后不会立即返回,需要等待某些条件的发生才会返回。open操作管道文件时,阻塞运行的函数。

如果一个进程以只写方式打开一个管道文件,open会阻塞运行,直到有一个进程以只读方式打开管道文件,open才会返回,进程才会接着执行。

如果一个进程以只读方式打开一个管道文件,open会阻塞运行,直到有一个进程以只写方式打开管道文件,open才会返回,进程才会接着执行。

read函数也会阻塞运行,知道写端写入数据或者所有的写端都关闭。
read读取数据并且会将内存上的已读数据清空。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值