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/8/7 5:07:55 阅读更多 →
基于Django构建音乐社交与数据可视化系统的全流程实践

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

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

2026/8/7 5:06:55 阅读更多 →
WPS JS宏入门实战:用JavaScript实现办公自动化与数据处理

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

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

2026/8/7 5:06:55 阅读更多 →

最新新闻

CSS伪类选择器全解析:从:hover到:nth-child的实战应用

CSS伪类选择器全解析:从:hover到:nth-child的实战应用

1. 项目概述:为什么伪类选择器是CSS的“灵魂捕手”?刚接触CSS的时候,我们都是从最基础的标签选择器、类选择器、ID选择器开始的。它们就像给网页元素贴上一个固定的标签,然后统一施加样式。但很快你就会发现,现实中的交…

2026/8/7 5:44:21 阅读更多 →
从OpenClaw到虾总9527:AI智能体本地化部署与深度定制实战

从OpenClaw到虾总9527:AI智能体本地化部署与深度定制实战

1. 从“小龙虾”到“虾总9527”:一个AI智能体项目的命名与重生最近在折腾本地AI智能体部署的朋友,估计没少被“OpenClaw”这个名字刷屏。这玩意儿刚出来的时候,大家图个新鲜,都叫它“小龙虾”,形象又好记。但用着用着&…

2026/8/7 5:44:21 阅读更多 →
VSCode Git图形化实战:从原理到高效开发工作流

VSCode Git图形化实战:从原理到高效开发工作流

1. 从命令行到图形化:为什么我们需要在VSCode里用Git?如果你和我一样,是从命令行开始接触Git的,那你一定对git add .、git commit -m "fix"、git push origin main这套组合拳烂熟于心。命令行高效、强大,能让…

2026/8/7 5:44:21 阅读更多 →
液压传动实战指南:从核心原理到系统调试的工程实践

液压传动实战指南:从核心原理到系统调试的工程实践

1. 项目概述:一份来自“硬核”课堂的实战笔记如果你对机械、自动化或者重型装备感兴趣,那么“液压传动”这四个字对你来说一定不陌生。它不像电路板那样精致,也不像代码那样抽象,它充满了力量感——用油液作为介质,传递…

2026/8/7 5:44:21 阅读更多 →
软考证书挂靠全流程解析:风险、操作与合法替代方案

软考证书挂靠全流程解析:风险、操作与合法替代方案

1. 项目概述:软考A计划的核心价值与风险边界 “软考A计划”这个提法,在行业内通常不是一个官方称谓,更像是一个圈内人为了特定目的——比如高效通过考试并实现“挂靠”——而私下总结的一套策略组合。我接触过不少咨询这类问题的朋友&#xf…

2026/8/7 5:44:21 阅读更多 →
计算机进制转换:从原理到编程实践

计算机进制转换:从原理到编程实践

1. 进制转换的基本概念与日常应用 计算机科学中最基础也最容易被忽视的技能之一就是进制转换。很多人觉得这不过是数学课上的一个小知识点,但实际上它贯穿了整个数字世界。从我们每天使用的手机APP到银行转账系统,底层都在进行着各种进制的转换运算。 …

2026/8/7 5:43:20 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →