1. 命名管道简介
匿名管道仅适用于有血缘关系的进程(如父子进程)。若需在两个不相关进程间通信,可使用命名管道(Named Pipe / FIFO)。其核心机制是通过文件系统路径定位同一文件,使不同进程访问相同的内核缓冲区。

当多个进程打开同一文件路径时,操作系统不会重复加载文件内容,而是共享内核中的 struct_file 结构。对于管道文件(FIFO),所有读写操作仅在'内核缓冲区'中完成,数据永不刷盘。
2. 命令行创建与测试
Linux 支持使用 mkfifo 命令直接创建命名管道文件。
1. 创建 FIFO 文件
mkfifo fifo
ls -l fifo
输出显示文件类型以 p 开头,表示其为管道文件。

2. 写入测试
使用 echo 模拟进程 A 向管道写入:
echo "你好" > fifo
此时命令会阻塞,因为 FIFO 默认处于阻塞模式,需要读端和写端同时存在。若无进程读取,写操作无法完成。

3. 读取测试
在另一终端执行 cat < fifo 模拟进程 B 读取:

成功实现跨进程通信。
3. 系统函数实现通信
以下示例展示如何使用 C++ 系统调用实现服务器端(Server)和客户端(Client)的通信。
common.hpp
#pragma once
#define FIFO_FILE "fifo"


