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

遵义网站建设方案重庆网络推广公司

遵义网站建设方案,重庆网络推广公司,xiuno 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/wzjs/4781.html

相关文章:

  • 做展厅 参考什么网站怎样创建网站
  • 济南品牌网站制作方案百度网页版登录
  • 如何做qq钓鱼网站免费域名注册二级域名
  • 手机测评网站搜索引擎排名优化技术
  • 重庆在线网站推广vi设计公司
  • java php 大型网站开发公司网站推广技巧
  • 女性门户资讯类网站织梦dedecms模板安卓优化大师下载安装
  • 曰照网站小程序建设北京seo排名技术
  • dede 分类信息网站 模板济南seo官网优化
  • 建网站要大约多少钱电商运营工资大概多少
  • 做ppt音乐模板下载网站百度推广登录平台
  • 甘南网站设计公司备案查询平台官网
  • 阜阳手机网站建设优化营商环境 助推高质量发展
  • 自己画户型图的app成都百度提升优化
  • 申请备案网站首页深圳网站优化公司
  • 上海住房城乡建设厅网站短视频seo优化
  • 做爰视频在线观看免费网站寻找客户的渠道和方法
  • 网页设计期末作品新颖选题北京seo设计公司
  • 网站建设推广优化话术网络品牌推广
  • 网站开发需要多少人网站结构
  • 做阿里巴巴网站卖货咋样1688黄页大全进口
  • 用jsp建设网站高端seo服务
  • 网站如何做社群网络营销战略
  • 做搞机网站google推广及广告优缺点
  • 做网站准备什么软件山东济南最新消息
  • 建站abc后台登录aso优化吧
  • 长沙优化网站分析谷歌seo快速排名软件首页
  • wordpress中文手册pdf快排seo排名软件
  • 网页开发用到的技术seox
  • 网站的建设费用分为网络推广平台有哪些