Linux之进程间通信(三)--命名管道
命名管道之前说到有血缘关系的进程可以实现管道通信但是要是没有血缘关系的进程也可以进行管道通信的---这种管道就是命名管道如果再来一个进程和当前进程一样打开同一个文件,文件的核心数据结构和缓冲区只会存在一份那么怎么确定两个进程打开的文件是同一个文件???只要访问同一个路径下的同一个文件,文件名路径唯一inode但是和之前的磁盘文件不同的是内核缓冲区不会刷新到磁盘系统mkfifomkfifo namedpipe它拥有自己独立的inode,并且p-说明其为管道文件但是他并不需要任何的磁盘空间我们可以试一下往这个文件里面写入,再由另外一个进程进行读取代码.hpp是 C 的头文件全称 header‑plus‑plus。 简单理解就是把 .h 头文件 .cpp 实现写在同一个文件里面。什么时候必须用 hpp???C 模板 templatetemplate 类、template 函数必须写在头文件模板代码编译阶段实例化编译器需要看到完整源代码不能分离到 cpp。 这种场景最适合.hpp。创建文件如果我们再次运行我们就发现报错,因为这个文件已经存在,inode是唯一的删除文件我们除了可以用rm也可以用unlink,他就是解除了文件和inode之间的映射系统调用再main函数里面创建后再删除当然我们想要更加完善一点文件创建前就检查文件是否存在,不存在则创建,存在就不创建,然后在进程结束时将管道文件删除再创建管道的成员函数时,添加判断管道文件是否存在判断管道是否存在的核心逻辑,用stat参数说明pathname文件路径字符串可以普通文件、目录、命名管道 (FIFO)、设备文件。statbuf传出参数传入struct stat结构体指针内核会把文件全部属性填充到这个内存。restrictC 语言指针限定修饰符告诉编译器两个指针不会指向同一块内存用于编译器优化写代码时可以直接忽略这个关键字。返回值成功返回0文件信息存入statbuf失败返回‑1设置 errno文件不存在、权限不足等打开文件这里打开文件和之前文件的操作类似,也是用open函数来进行实现定义打开方式时写还是读打开打开了文件,然后要接受信息和发送信息server进行信息接收client进行发送信息注意再通信没有开始之前,如果读端打开但是写端没有打开,读端的open就会阻塞,直到write打开为什么呢??命名管道FIFO默认是阻塞模式。 管道本质是内核中的一块缓冲区设计语义管道必须同时存在读端、写端open 调用才返回。服务端open(fifo,O_RDONLY)只读打开 此时内核发现只有读文件描述符没有任何写端打开这个管道。open()直接挂起阻塞让出 CPU休眠不返回。直到客户端执行open(fifo,O_WRONLY)只写打开。 内核看到现在管道同时具备读端 写端。 此时两边的open()全部唤醒函数返回程序继续往下跑。

相关新闻

T-RTK UM982高精度定位模块参数配置与优化实战指南

T-RTK UM982高精度定位模块参数配置与优化实战指南

最近在调试T-RTK UM982高精度定位模块时,发现其参数配置的灵活性与复杂性并存。网上资料要么过于零散,要么只讲基础接线,对于如何根据实际应用场景(如无人机、农机自动驾驶、测绘)进行深度参数优化,缺乏系统…

2026/10/28 21:55:32 阅读更多 →
基于Django构建音乐社交与数据可视化系统的全流程实践

基于Django构建音乐社交与数据可视化系统的全流程实践

在实际的 Web 开发项目中,构建一个集成了社交、数据分析和可视化功能的系统,往往需要将多个复杂模块有机地串联起来。一个以音乐为核心的社交平台,不仅需要处理用户、好友、动态等社交关系,还要能够分析用户的音乐偏好&#xff0c…

2026/10/25 14:39:43 阅读更多 →
WPS JS宏入门实战:用JavaScript实现办公自动化与数据处理

WPS JS宏入门实战:用JavaScript实现办公自动化与数据处理

1. 项目概述:为什么要在WPS里折腾JS宏?如果你经常和WPS表格打交道,大概率遇到过这样的场景:每天都要重复处理一堆格式雷同的报表,比如合并几十个表格、批量替换特定内容、或者给一堆数据自动标红加粗。手动操作不仅耗时…

2026/10/30 18:09:15 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/31 0:19:11 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/31 10:20:19 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/31 10:20:23 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/31 0:59:28 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/31 10:30:19 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/31 9:29:43 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/30 17:32:24 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/31 11:00:40 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/31 0:09:01 阅读更多 →