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

c/c++ 里的进程间通信 , 管道 pipe 编程举例

(1)以下是一个网上的使用 pipe 编程的范例:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>int main() {int pipefd[2];pid_t pid;char writeMsg[] = "Hello from parent process!";char readMsg[100];// 创建管道if (pipe(pipefd) == -1) {perror("pipe");exit(EXIT_FAILURE);}// 创建子进程pid = fork();if (pid == -1) {perror("fork");exit(EXIT_FAILURE);}if (pid > 0) { // 父进程close(pipefd[0]); // 关闭读取端// 向管道写入消息write(pipefd[1], writeMsg, strlen(writeMsg) + 1); // +1 是为了包含终止符 '\0'close(pipefd[1]); // 写入完成后关闭写入端wait(NULL);       // 等待子进程结束}else  { // 子进程close(pipefd[1]); // 关闭写入端// 从管道读取消息ssize_t numBytes = read(pipefd[0], readMsg, sizeof(readMsg) - 1);if (numBytes == -1) {perror("read");exit(EXIT_FAILURE);}readMsg[numBytes] = '\0'; // 添加字符串终止符// 打印读取的消息printf("Received message: %s\n", readMsg);close(pipefd[0]); // 读取完成后关闭读取端}return 0;
}

在这里插入图片描述

(2)上面引用了 wait() 函数,给出其定义:

在这里插入图片描述

(3)再给出 linux 0.11 里很重要的管道文件的创建源码:

在这里插入图片描述

(4)文件都对应 inode 节点,接着给出文件描述符 ,file 文件结构 ,inode 节点结构的定义与关联关系:

在这里插入图片描述

(5)读写管道,主要依赖于 linux 0.11 系统的这俩系统函数:

在这里插入图片描述

(6)给出我自己的简单版的 实验结果:

在这里插入图片描述

(7)

谢谢

http://www.lryc.cn/news/517200.html

相关文章:

  • 【C++笔记】红黑树(RBTree)深度剖析和AVL树的对比分析
  • Pytorch初学
  • Golang学习笔记_20——error
  • 基于Vite+TS初始项目 | 不断更新
  • R语言装环境Gcc报错以及scater包的安装
  • 关于量子神经网络的思考
  • 注册中心如何选型?Eureka、Zookeeper、Nacos怎么选
  • 使用 Conda创建新的环境遇到的问题
  • Flutter项目开发模版,开箱即用(Plus版本)
  • Spring Boot + Jasypt 实现application.yml 属性加密的快速示例
  • arcgisPro加载CGCS2000天地图后,如何转成米单位
  • 多模态论文笔记——GLIDE(DALL·E 2模型核心部件)
  • mybatisPlus动态sql语句 ${ew.sqlSegment}
  • 【工具】HTML自动识别用户正在讲话 以及停止讲话
  • 小程序与内嵌网页的数据通信
  • Android - NDK:编译可执行程序在android设备上运行
  • 快速上手:采用Let‘sEncrypt免费SSL证书配置网站Https (示例环境:Centos7.9+Nginx+Let‘sEncrypt)
  • shell技能树-扩展变量
  • 基于RedHat9部署WordPress+WooCommerce架设购物网站
  • LabVIEW瞬变电磁接收系统
  • Docker入门篇[SpringBoot之Docker实战系列] - 第534篇
  • Linux系统扩容根 (/) 文件系统空间
  • JavaScript之JQuery
  • JAVA学习记录2
  • 计算机网络、嵌入式等常见问题简答
  • 中华人民共和国预算法实施条例
  • 【养生--果蔬汁】
  • LLM架构从基础到精通之词向量1
  • 【SQL】Delete使用
  • KBQA前沿技术