unix 父子进程间通信-无名管道
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,#include #include #include #include #include #include #include #define MAXLINE 100char buf[MAX
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
廊坊软件开发公司米云
论文中的数据库表怎么表示
数据库用户导出
公安部机关网络安全违规
怎么往我的世界服务器加模组
数据库直接对接
新媒体对国民进行网络安全宣传
wps找出多个重复数据库
数据库中行是
郑州糖小果网络技术
网络安全咨询需要考什么证书
网络技术提成方案范本
医鹿服务器奔溃
数据库表的记录保存在
北京企业软件开发服务至上
ai互联网科技作品
长沙千恩网络技术有限公司
土壤有哪些数据库
网络安全知识去哪学
惠州市网络安全教育平台
qq联系赵女士 网络安全
IFYOU音译软件开发
药企网络安全
如何清除服务器中所有粒子
保障网络安全的技术措施
车辆工程软件开发哪个难
python 数据库库
沈阳奇搜网络技术怎么样
静安区海航软件开发质量保障
服务器snmp