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

Linux系统编程——进程通信之无名管道

Linux系统编程——进程通信之无名管道

管道

管道是一种半双工的进程通信方式,其中一个进程负责读,一个进程负责写,因此管道是半双工的,管道分为命名管道和无名管道,无名管道也叫匿名管道,无名管道只能用于有亲缘关系的进程间的通信,比如父子进程。

pipe函数

int pipe(int pipefd[2]);

所需头文件:unistd.h
功能:创建管道。
pipefd[0]:负责读取管道内容的文件描述符。
pipefd[1]:负责向管道内写内容的文件描述符。
返回值:成功返回0,错误返回-1并设置errno。

实例:多进程读写管道

代码:

#include <stdio.h>
#include <unistd.h>
#include <string.h>int main(void) {int fd[2] = {0};char buf[128] = "Hello";pid_t pid;if (pipe(fd) < 0) {perror("pipe err");return -1;}pid = fork();if (pid < 0) {perror("fork failed");} else if(pid == 0) {while(1) {read(fd[0], buf, sizeof(buf));if (strncmp(buf, "quit", 4) == 0 )break;printf("buf:%s\n", buf);}} else {while(1) {fgets(buf, sizeof(buf), stdin);write(fd[1], buf, sizeof(buf));if (strncmp(buf, "quit", 4) == 0)break;}wait(NULL);}return 0;
}

运行结果:
在这里插入图片描述

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

相关文章:

  • 基于springboot高校办公室行政事务管理系统【带源码和文档】
  • Amplitude使用记录
  • 云南建网站需要多少钱莱芜雪野湖别墅
  • 慢查询日志在性能优化中的价值
  • ADB点击实战-做一个自动点广告播放领金币的脚本app(中)
  • 网站优化关键词排名wampserver做网站
  • 中国建设银行网站首不能制作网页的软件有哪些
  • PostgreSQL insert 偶发变慢的原因分析 —— 从缓存击穿到系统 I/O
  • 简单的网站php开发教程高质量外链购买
  • MatplotlibDeprecationWarning
  • 织梦如何做网站地图西双版纳傣族自治州
  • 教程网站建设南宁制作企业网站
  • 刷题日常 5 二叉树最大深度
  • 信刻创新型近线+离线安全存储归档策略,保障电子档案全生命周期管理
  • Flutter for HarmonyOS开发指南(九):测试、调试与质量保障体系
  • 北京云主机网站源码做游戏网站要多少钱
  • 深圳自建站有哪些大公司邯郸企业网站建设价格
  • 项目分享| LocalAI-master:本地部署的OpenAI替代方案
  • 2.多线程进阶
  • 建湖网站定制重庆网站建设齐重庆零臻科技
  • 网站策划的内容wordpress3.8 中文标签
  • Rust评测案例:Rust、Java、Python、Go、C++ 实现五大排序算法的执行时间效率比较(基于 OnlineGDB 平台)
  • golang redis 管道
  • go-dongle v1.2.0 发布,新增 SM2 非对称椭圆曲线加密算法支持
  • ⚡️2025-11-11GitHub日榜Top5|Go AI代理开发框架
  • 网站建设g如何做设计网站页面
  • 智能推荐助力数据驱动决策模式提升效率
  • 博客系统 wordpressseo公司怎么样
  • 网站建设与管理 期末软件库资源共享
  • NetSonar网络诊断工具的安装与基本使用