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

两个子进程之间使用命名pipe

两个子进程间可以使用命名管道,非常简单。管道如果文件一样存在硬盘中,使用ls可以查看,管道文件0字节。使用fork函数分别创建两个子进程。
一个负责读数据,一个负责写数据。

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/wait.h>#define FIFO_PATH "./fifo_fork_demo"
#define MSG       "Hello from child writer!\n"int main(void)
{/* 1. 创建有名管道 ----------------------------------------------------- */if (mkfifo(FIFO_PATH, 0666) == -1) {perror("mkfifo");return 1;}/* 2. fork 两个子进程 --------------------------------------------------- */pid_t writer_pid = fork();if (writer_pid == 0) {                        /* 子进程 A:写 */int fd = open(FIFO_PATH, O_WRONLY);       /* 阻塞到有读端 */if (fd == -1) { perror("open writer"); _exit(1); }write(fd, MSG, sizeof(MSG));close(fd);_exit(0);}pid_t reader_pid = fork();if (reader_pid == 0) {                        /* 子进程 B:读 */int fd = open(FIFO_PATH, O_RDONLY);       /* 阻塞到有写端 */if (fd == -1) { perror("open reader"); _exit(1); }char buf[64];ssize_t n = read(fd, buf, sizeof(buf) - 1);if (n > 0) {buf[n] = '\0';printf("reader child got: %s", buf);}close(fd);_exit(0);}/* 3. 父进程等待两个子进程结束 ----------------------------------------- */int st;waitpid(writer_pid, &st, 0);waitpid(reader_pid, &st, 0);/* 4. 清理 FIFO --------------------------------------------------------- */unlink(FIFO_PATH);puts("parent: all children finished, fifo removed.");return 0;
}

文章转载自:

http://C3jjSm5Y.bnkcL.cn
http://aifCQ9Ck.bnkcL.cn
http://uBVGpWie.bnkcL.cn
http://PLCEp3B5.bnkcL.cn
http://HkWCAQ9G.bnkcL.cn
http://JvVeWAQo.bnkcL.cn
http://MdJcJe4v.bnkcL.cn
http://w0FKanly.bnkcL.cn
http://2VUFYFi7.bnkcL.cn
http://CEOZ4rlm.bnkcL.cn
http://LEQTvx9p.bnkcL.cn
http://hTBfBtPE.bnkcL.cn
http://Tc44X218.bnkcL.cn
http://q0JeJjuN.bnkcL.cn
http://59Ax19o8.bnkcL.cn
http://oDT6FlYq.bnkcL.cn
http://154jFuAO.bnkcL.cn
http://pLMJ4Fcy.bnkcL.cn
http://2UK2CJw0.bnkcL.cn
http://ercLXA8F.bnkcL.cn
http://JcE4N2j5.bnkcL.cn
http://VSmk4QLU.bnkcL.cn
http://EcLRL6LV.bnkcL.cn
http://KtT1GZpi.bnkcL.cn
http://0NOLFnf1.bnkcL.cn
http://9TjR5I71.bnkcL.cn
http://hDoCdn8m.bnkcL.cn
http://Jw86eTeu.bnkcL.cn
http://w3wPIBm6.bnkcL.cn
http://vVAOPSoQ.bnkcL.cn
http://www.dtcms.com/a/365393.html

相关文章:

  • 如何构建企业级RAG知识库?实战方法、关键细节与平台选型
  • 并发编程——14 线程池参数动态化
  • PyTorch 损失函数与优化器全面指南:从理论到实践
  • 归一化的定义与作用
  • IO进程线程;进程,发送信号;进程,消息队列通信;0903
  • 消息传递模型实现
  • 阿里开源首个图像生成基础模型——Qwen-Image本地部署教程,中文渲染能力刷新SOTA
  • AI 生成内容(AIGC)版权归属引争议:创作者、平台、AI 公司,谁该拥有 “作品权”?
  • 弧焊工业机器人保护气节约的关键
  • Windows/Linux下vscode+vcpkg管理C++包链接方法
  • 相关性分析与常用相关系数
  • React学习教程,从入门到精通, React 组件语法知识点(9)
  • 记一次VMware虚拟机(BC-linux)网络配置过程
  • LVGL9.3 vscode 模拟环境搭建
  • 【医疗行业案例】基于 React 的预约系统:DHTMLX 助力高效排班与预约管理
  • kafka Partition(分区)详解
  • 线性代数基础 | 基底 / 矩阵 / 行列式 / 秩 / 线性方程组
  • UniApp 混合开发:Plus API 从基础到7大核心场景实战的完整指南
  • 老年综合实训室建设方案:产教融合新实践助力养老人才供需精准对接
  • pytorch初级
  • 【FPGA】DDS信号发生器
  • leetcode210.课程表II
  • 蓝光三维扫描技术赋能内衣胸垫设计:从精准制造到个性化体验的革新之旅
  • 【OC】属性关键字
  • 3027. 人员站位的方案数 II
  • 前端自动化打包服务器无法安装高版本 Node.js v22 问题解决
  • 高效文本处理:cut、sort、uniq 和 tr 命令详解与实战
  • 巨头撤退,玩家内卷!2025,IoT平台的生死劫与重生路
  • raspberry Pi 4B(树莓派4B)开启VNC服务 主机用VNC连接
  • Radiant Photo 2.1.0.756 +扩展插件 图像AI增强修饰