论坛网站开发外文文献网站源代码购买

张小明 2026/1/9 3:17:10
论坛网站开发外文文献,网站源代码购买,张家口万全区建设网站,wordpress 更改语言extern int pipe (int __pipedes[2])上面是函数原型 传入一个字符数组#xff0c;创建两个文件描述符#xff0c;[0]为读端[1]为写端下面给一个代码案例#xff0c;一步步解析过程#include stdio.h #include stdlib.h #include unistd.h #include 创建两个文件描述符[0]为读端[1]为写端下面给一个代码案例一步步解析过程#include stdio.h #include stdlib.h #include unistd.h #include string.h #include sys/types.h #include sys/wait.h int main(int argc, char const *argv[]) { int pipefd[2]; //管道传入的数组 pid_t cpid; //子进程pid if(argc ! 2) { printf(%s 请填写需要传递的信息\n,argv[0]); exit(EXIT_FAILURE); } if(pipe(pipefd) -1) { perror(创建管道失败); exit(EXIT_FAILURE); } //fork创建子进程 cpid fork(); if(cpid -1) { perror(fork); exit(EXIT_FAILURE); } if(cpid 0) { //子进程 close(pipefd[1]); //关闭读端 printf(子进程 %d 收到数据\n,getpid()); char buf; while(read(pipefd[0],buf,1) 0) { write(STDOUT_FILENO,buf,1); } printf(\n); close(pipefd[0]); //关闭读端 _exit(EXIT_SUCCESS); //系统调用关闭子进程无需回收资源 } else { //父进程写数据 close(pipefd[0]); //关闭读端 printf(父进程 %d 写入数据\n,getpid()); write(pipefd[1],argv[1],strlen(argv[1])); close(pipefd[1]); //写完后关闭写端 waitpid(cpid,NULL,0); //等待子进程结束 exit(EXIT_SUCCESS); } return 0; }使用 ./unnamed_pipe_test test 运行代码输出父进程 12259 写入数据子进程 12260 收到数据test交互动画演示1. 文件描述符 (File Descriptor, FD)把文件描述符想象成一个遥控器。内核层操作系统内核维护着真正的“管道”对象实际上是一块内存缓冲区。用户层进程手里拿的pipefd[0]值为3和pipefd[1]值为4只是遥控器上的按钮编号。pipefd[0]是 Read 按钮。pipefd[1]是 Write 按钮。进程不直接操作管道内存只能通过拿着这些号码FD去请求内核read/write。2.fork()时的复制机制这是理解一切的关键。当你调用fork()时操作系统复制了父进程的PCB进程控制块。这其中包含了文件描述符表的拷贝。可以把它想象成复印了一把钥匙。父进程手里有开门访问管道的钥匙子进程复制了一把一模一样的钥匙。虽然有两把钥匙两个不同的进程各自有自己的 FD 表但它们开的是同一扇门指向同一个内核管道对象。3. 引用计数 (Reference Count) —— 管道生命的维持者内核中的管道对象有一个“生命值”这就是引用计数。它记录了“现在有多少个文件描述符指向我”。正常流程fork后写端引用计数 2父进程持有 子进程持有。子进程close(pipefd[1])- 写端引用计数降为 1。父进程写完数据。父进程close(pipefd[1])-写端引用计数降为 0。核心时刻内核检测到写端计数为 0意味着“世界上再也没有人能往这个管道写数据了”。内核向读端发送EOF (End Of File)。子进程的read函数收到 EOF返回 0循环结束程序正常退出。错误流程忘记关闭 closefork后写端引用计数 2。子进程没有关闭写端close(pipefd[1])。父进程写完数据关闭自己的写端 - 写端引用计数降为 1因为子进程手里还捏着一个写端 FD 呢虽然它不用。死锁时刻子进程去read。因为写端计数是 1不是 0内核认为“还有人可能会写数据”所以不发送 EOF。子进程一直傻傻地阻塞在read上等待那个其实就在它自己手里的写端写入数据但它自己由于阻塞在读上永远不会去写。程序挂起Hang。这就是 Linux 进程间通信优雅而严谨的底层逻辑
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

专业网站建设费用怎么算wordpress开发投稿

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个面向初学者的Python教程脚本,逐步演示try-except语句:1. 最基本的语法结构;2. 捕获特定异常类型;3. 使用else和finally子句…

张小明 2026/1/9 2:23:13 网站建设

重庆网站布局信息公司高效网站建设

这里写自定义目录标题前言一、什么是具体的应用系统二、什么是抽象的应用系统三、抽象的应用系统是设计开发语言的基础前言 上篇文章介绍了啥是应用系统?应用系统现状如何?存在什么问题? 本期我们就将从具体的应用系统谈起,谈到…

张小明 2026/1/9 0:06:12 网站建设

做网站怎么收费江浙区域网络公司排名

Photoshop AVIF插件完整安装教程:快速开启高效图像压缩新时代 【免费下载链接】avif-format An AV1 Image (AVIF) file format plug-in for Adobe Photoshop 项目地址: https://gitcode.com/gh_mirrors/avi/avif-format 还在为庞大的图像文件占用存储空间而烦…

张小明 2026/1/7 23:47:11 网站建设

gta5此网站正在建设c 可以做网站嘛

还在为复杂的无人机操作而苦恼吗?想要快速掌握专业的飞行控制技巧吗?Mission Planner作为业界领先的无人机地面站软件,将专业技术转化为直观操作体验,让您从新手迅速成长为飞行专家。 【免费下载链接】MissionPlanner 项目地址…

张小明 2026/1/7 23:46:39 网站建设

义乌外贸网站建设行吗高端装修公司排名前十

Anaconda克隆环境快速复制成功配置的PyTorch实例 在深度学习项目开发中,你是否经历过这样的场景:本地训练好的模型,在同事或服务器上却跑不起来?明明代码一致,却报出 torch not found、CUDA version mismatch 或某个依…

张小明 2026/1/7 23:46:07 网站建设

网站首页打开速度办公软件

在AIGC技术日新月异的今天,文本生成图像领域迎来了一项突破性进展——Qwen-Image-Lightning。这款基于Qwen-Image架构深度优化的轻量化模型,通过创新的知识蒸馏与LoRA微调技术,实现了从480步到8步的惊人飞跃,让消费级GPU也能畅享高…

张小明 2026/1/7 23:45:35 网站建设