unix 父子进程间通信-无名管道
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,#include #include #include #include #include #include #include #define MAXLINE 100char buf[MAX
千家信息网最后更新 2026年11月02日unix 父子进程间通信-无名管道
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #define MAXLINE 100
- char buf[MAXLINE];
- int main(int argc, char** agrv)
- {
- int pipefd[2];
- int ret;
- if(0 != pipe(pipefd))//创建管道
- {
- perror("pipe\n");
- exit(1);
- }
- //创建子程序
- if((ret=fork()) < 0)//创建失败
- {
- perror("fork\n");
- exit(1);
- }
- else if(ret == 0)//子程序
- {
- FILE* fp;
- close(pipefd[0]);//关闭管道可读端
- fp = fopen("./main.c","r"); //打开已存在可读文件
- if(NULL == fp)
- {
- perror("fopen\n");
- exit(1);
- }
- while(fgets(buf,MAXLINE,fp) != NULL)//将文件内容全部读入管道
- {
- int n = strlen(buf);
- if(n != write(pipefd[1],buf,n))
- {
- perror("write\n");
- exit(1);
- }
- }//end while
- if(ferror(fp))//在读的过程文件是否有报错
- {
- perror("ferror\n");
- exit(1);
- }
- close(pipefd[1]);//关闭文件可写端
- exit(0);//退出子程序
- }
- else
- {
- close(pipefd[1]);//关闭管道可写端
- if(-1 == wait(NULL))//等待子程序完全将文件内容读入到管道
- {
- perror("wait\n");
- exit(1);
- }
- if(dup2(pipefd[0],STDIN_FILENO) != STDIN_FILENO)//重新设置标准输入为管道可读端
- {
- perror("dup2\n");
- exit(1);
- }
- if(execl("/bin/more","more",(char*)0) < 0 )//分页程序 自动调用标准输入文件 显示管道内容
- {
- perror("execl\n");
- exit(1);
- }
- }
- return 0;
- }
管道
文件
子程序
内容
标准
输入
程序
过程
在读
父子
进程
通信
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖南永感互联网科技有限公司
互联网科技活动banner
互联网科技公司华为
科技互联网项目
没上市的科技互联网公司
科技制造互联网公司
美国互联网科技
佰商互联网科技有限公司
互联网科技股有哪些
互联网科技股午盘股票涨跌
科技互联网的估值
小米互联网科技园设置
互联网经济与金融科技
国大互联网教育科技有限公司工作
互联网新科技动漫ppt素材
洛阳共同富裕互联网科技有限公司
有人说阿里系是互联网科技企业
互联网科技包装股份有限公司上市
青岛互联网科技园
互联网科技创新方面的资料
互联网科技集团
北京禾田雨橡互联网科技
国外互联网科技网站
互联网科技股有哪些
互联网科技中介
想开互联网科技公司怎么样
山东大美朱楼互联网科技有限公司
唐山双旺合互联网科技产业园
数字科技和互联网金融哪个好
科技发展第三阶段互联网时代