首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Linux管道pipe从入门到进阶
📅 2026/9/14 23:01:43
✍️ 爱科研究院
👁 阅读 3,247
管道基础piep创建管道且只能由一方当写端另一方当读端。这里一定要注意read函数需要读取到数据结尾所以用sizeof会把字符串后的\0也读进去读的是字节数但strlen读取的是字符串长度不会读取\0管道实现原理内核借助环形队列机制使用内核缓冲区实现特质 1.伪文件2.滚到中的数据只能读取一次。3.数据在管道中只能单向流动局限性1.自己写不能自己读。2.数据不可反复读。3.半双工通讯4.血缘关系进程间通讯这是管道的简化模型我们在使用的时候一定要保证输入和输出在管道内是单向的加dup2加exec配合输出指令pipedup2execlp再次代码中同时呈现主要执行ls | wc -ldup2把原本的标准输出重定向到了管道接口通过将进程的输入输出与管道建立联系实现父子进程execlp的联合sys_error是定义的函数这段代码是在演示一个管道pipe让两个子进程向父进程传递数据。核心目的创建两个子进程分别向管道写入 “1.hello\n” 和 “2.world\n”父进程从管道读取并打印。多个子进程输入父进程输出#includestdio.h#includestdlib.h#includestring.h#includeunistd.h#includesys/wait.hintmain(){intfd[2];intret;charbuf[1024];retpipe(fd);pid_tpid;inti;for(i0;i2;i){pidfork();if(pid0){break;}elseif(pid-1){perror(fork error);exit(1);}}if(i0){close(fd[0]);write(fd[1],1.hello,dlz\n,strlen(1.hello,dlz\n));close(fd[1]);}elseif(i1){close(fd[0]);write(fd[1],2.wd,dlz\n,strlen(2.wd,dlz\n));close(fd[1]);}elseif(i2){close(fd[1]);while((retread(fd[0],buf,sizeof(buf)))0){write(STDOUT_FILENO,buf,ret);}write(STDOUT_FILENO,buf,ret);for(intj0;j2;j){wait(NULL);}}return0;}利用i去区分子进程1子进程2父进程父进程需要wait两个子进程且注意多个子进程输入时需要多次输出利用for循环检测ret是否0直到输出结束。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/14 23:01:43
基于Spring Boot的新能源汽车电池包涂胶密封作业管理系统设计与实现
2026/9/14 23:01:43
OpenProject 本地开发环境启用 HTTPS:Apache2 反向代理与自签名证书配置指南
2026/9/14 23:01:43
嵌入式系统基片技术解析与应用指南
2026/9/15 2:26:58
手机远程控制电脑实测:ToDesk、向日葵、UU远程与微软RD Client全方位对比
2026/9/15 2:26:58
SVM共享虚拟内存硬件五层依赖深度解析
2026/9/15 2:26:58
Transformer语义分割实战:多分支特征图切分与训练调优
2026/9/15 2:26:58
VMware Workstation Pro 安装 Ubuntu 虚拟机完整指南(含配置与排错)
2026/9/15 2:26:58
免杀技术原理与Kali实操:从检测机制到绕过思路
2026/9/15 2:21:58
Unity绳索物理模拟实战:从Verlet约束到跑酷绳索小人原型
2026/9/15 0:01:49
2026年NVMe SSD装机避坑指南:PCIe 4.0/5.0、NVMe启动与M.2 Key兼容性实测
2026/9/15 0:01:49
Flutter与OpenHarmony物理动画实现指南
2026/9/15 0:01:49
vscode插件开发之语言服务器,这次让用 TaoToken 接入的 Codex 排查 LSP 服务端连接
2026/9/14 7:37:16
拯救者Y7000黑屏故障排查与维修实战指南
2026/9/14 2:50:57
AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验
2026/9/14 11:25:37
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化