【操作系统】FIFO的创建

FIFO

目录

FIFO

FIFO介绍

创建管道

使用FIFO完成两个进程通信


FIFO介绍

FIFO常被称为命名管道,以区分管道(pipe)。管道(pipe)只能用于“有血缘关系”的进程间通信。但通过FIFO,不相关的进程也能交换数据。

FIFO是Linux基础文件类型中的一种(文件类型为p,可通过ls -l查看文件类型)。但FIFO文件在磁盘上没有数据块,文件大小为0,仅仅用来标识内核中一条通道。进程可以打开这个文件进行read/write,实际上是在读写内核缓冲区,这样就实现了进程间通信。

创建管道

  • 方式1-使用命令 mkfifo

命令格式: mkfifo 管道名

例如:mkfifo myfifo

  • 方式2-使用函数

int mkfifo(const char *pathname, mode_t mode);

参数说明和返回值可以查看man 3 mkfifo

当创建了一个FIFO,就可以使用open函数打开它,常见的文件I/O函数都可用于FIFO。如:close、read、write、unlink等。

FIFO严格遵循先进先出(first in first out),对FIFO的读总是从开始处返回数据,对它们的写则把数据添加到末尾。*它们不支持诸如*lseek*()等文件定位操作。*

使用FIFO完成两个进程通信

  • 使用FIFO完成两个进程通信的示意图

 

思路:

进程A:

  • 创建一个fifo文件:myfifo

  • 调用open函数打开myfifo文件

  • 调用write函数写入一个字符串如:“hello world”(其实是将数据写入到了内核缓冲区)

  • 调用close函数关闭myfifo文件

进程B:

  • 调用open函数打开myfifo文件

  • 调用read函数读取文件内容(其实就是从内核中读取数据)

  • 打印显示读取的内容

  • 调用close函数关闭myfifo文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值