当前位置: 首页 > news >正文

宝安公司网站建设qq公众平台

宝安公司网站建设,qq公众平台,app开发公司怎么查看,文艺主题wordpress文章目录 🚀 深入理解命名管道(FIFO)及其C实现一、命名管道核心特性1.1 🧩 基本概念 二、💻 代码实现解析2.1 📁 公共头文件(common.hpp)2.2 🖥️ 服务器端(s…

文章目录

  • 🚀 深入理解命名管道(FIFO)及其C++实现
    • 一、命名管道核心特性
      • 1.1 🧩 基本概念
    • 二、💻 代码实现解析
      • 2.1 📁 公共头文件(common.hpp)
      • 2.2 🖥️ 服务器端(server.cpp)
      • 2.3 📱 客户端(client.cpp)
    • 三、🔧 运行机制图解
    • 四、💡 技术亮点分析
      • 4.1 🚦 阻塞行为控制
      • 4.2 ⚡ 数据传输特性
      • 4.3 🐛 错误处理策略
    • 五、🚀 编译运行演示
      • 5.1 🔧 操作流程

在这里插入图片描述

🚀 深入理解命名管道(FIFO)及其C++实现


一、命名管道核心特性

1.1 🧩 基本概念

命名管道(FIFO)是一种特殊的文件类型,具有以下特点:

  • 跨进程通信:允许无亲缘关系进程通信 🌐
  • 文件系统可见:通过mkfifo创建实体文件 📂
  • 双工限制:需分别以读/写模式打开文件描述符 🔄
  • 阻塞特性:打开操作会阻塞直到另一端就绪 ⏳

二、💻 代码实现解析

2.1 📁 公共头文件(common.hpp)

#pragma once
#include <iostream>
#include <string>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>#define FIFO_FILE "./myfifo"  // 🚪 管道文件路径
#define MODE 0664             // 🔒 权限模式enum {FIFO_CREATE_ERR = 1,     // 🛠️ 创建错误FIFO_DELETE_ERR = 2,     // 🗑️ 删除错误FIFO_OPEN_ERROR = 3      // 🔓 打开错误
};class Init {  // 🔄 RAII管理管道生命周期
public:Init() {int n = mkfifo(FIFO_FILE, MODE);if(n == -1) {perror("❌ mkfifo");exit(FIFO_CREATE_ERR);}}~Init() {int m = unlink(FIFO_FILE);if(m == -1) {perror("❌ unlink");exit(FIFO_DELETE_ERR);}}
};

2.2 🖥️ 服务器端(server.cpp)

#include "common.hpp"int main() {Init init;  // 🏗️ 自动创建管道int fd = open(FIFO_FILE, O_RDONLY);  // ⏸️ 阻塞直到客户端连接if(fd < 0) {perror(" open");exit(FIFO_OPEN_ERROR);}cout << " Server ready" << endl;while(true) {char buffer[1024];int bytes = read(fd, buffer, sizeof(buffer)-1);if(bytes > 0) {buffer[bytes] = '\0';cout << " Received: " << buffer << endl;} else if(bytes == 0) {cout << " Client disconnected" << endl;break;} else {perror(" read");break;}}close(fd);return 0;
}

2.3 📱 客户端(client.cpp)

#include "common.hpp"int main() {int fd = open(FIFO_FILE, O_WRONLY);  // 🔔 触发服务器唤醒if(fd < 0) {perror(" open");exit(FIFO_OPEN_ERROR);}cout << " Connected to server" << endl;string line;while(getline(cin, line)) {write(fd, line.c_str(), line.size());  // 📤 发送数据}close(fd);return 0;
}

三、🔧 运行机制图解

Server FIFO Client mkfifo() 🛠️ open(O_RDONLY) ⏳ open(O_WRONLY) 🔔 write() 📤 read() 📥 持续写入 转发数据 loop [🔁 通信循环] close() 🚪 检测EOF 👋 Server FIFO Client

四、💡 技术亮点分析

4.1 🚦 阻塞行为控制

// 服务器端 open() 阻塞示例
int fd = open(FIFO_FILE, O_RDONLY);  // ⏸️// 客户端 open() 解除阻塞
int fd = open(FIFO_FILE, O_WRONLY);  // ▶️

4.2 ⚡ 数据传输特性

特性描述图标
字节流传输无消息边界,需自定义协议🌊
原子性保证小于PIPE_BUF(通常4K)保证原子性⚛️
流量控制写满缓冲区后自动阻塞🚧

4.3 🐛 错误处理策略

if(write(fd, buf, len) == -1) {if(errno == EPIPE) {  // 💔 连接断开cout << " Connection closed" << endl;close(fd);exit(1);}perror(" write");
}

五、🚀 编译运行演示

5.1 🔧 操作流程

# 终端1:启动服务器
$ ./server
🔄 Server ready# 终端2:启动客户端
$ ./client
💬 Please Enter@ Hello World!# 终端1显示
📥 Received: Hello World!

http://www.dtcms.com/a/575414.html

相关文章:

  • php网站模板 下载wordpress 对空间要求
  • 网站建设费算广告费吗网站开发流程进度表
  • 网站开发的框架协议西安搬家公司价目表
  • offer选择,调研一个公司应该调研什么
  • 网站备案号几位数字 沪wordpress电子邮件怎么设置
  • 网易云音乐网站开发介绍织梦网站开发视频
  • 【形宙数字】MANGOLD INTERACT 行为观察分析系统-行为观察统计分析-人类行为学研究-行为逻辑
  • 尚品网站建设没有网站做推广
  • 西安网站自然排名优化十大网站app软件
  • 要做网站找谁帮忙做做网站为职业生存不下去
  • 网站变成了百度推广做网站反复修改
  • 紫金公司网站制作青岛网站建设软件
  • GJOI 10.28 题解
  • 明薇通网站建设哪家好网站建设费用如何列支
  • 仓颉编程语言基础集合类型详解:HashMap深度解析
  • 花都有做网站福建建设执业资格注册管理中心网站
  • Linux应用开发-8-进程
  • 成都建设网站平台音乐分享 wordpress
  • 福建省 园区网互联及网站建设 网络部分题目做网站成品
  • 商洛市建设工程造价管理站网站热 网站正在建设中
  • 公众号如何做微网站建设外贸网站注意什么
  • 网站建设推广页国家企业信息公示系统全国
  • 怎么加php网站登陆源码网站开发培训收费
  • 厦门外贸企业网站建设浏览器什么网站都能打开的
  • 做ppt封面的网站全国工商企业查询官网
  • 【算法笔记 10】贪心策略五
  • 威海网站建设地址上海企业网站建设报价
  • 漳州 网站建设多少钱视频网站如何做弹幕
  • 网站开发遇到的困难总结内存 wordpress
  • 单页网站建设服务好的商家wordpress ping optimizer