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

华清day4 24-7-31

1> 使用父子进程完成两个文件的拷贝

父进程拷贝前一半内容,子进程拷贝后一半内容

子进程结束后退出,父进程回收子进程的资源

/* 
使用父子进程完成两个文件的拷贝父进程拷贝前一半内容,子进程拷贝后一半内容
子进程结束后退出,
父进程回收子进程的资源
*/
#include<myhead.h>
int main(int argc, const char *argv[])
{char buf[128] = " ";//定义搬运工int count = 0,n =0,num = 0;pid_t pid =-1;pid = fork();//创建子进程if(pid>0)//父进程执行的代码{int src = -1;if((src = open("./01dir.c",O_RDONLY))== -1)//被复制的文件以只读的形式打开{perror("src open error");return -1;}int dest = -1;if((dest = open("./zy.txt",O_RDWR|O_CREAT|O_TRUNC,0665))== -1)//被复制的文件以w+的形式打开{perror("dest open error");return -1;}n = (lseek(src, 0, SEEK_END)+1)/2;//遇到奇数时候确保能复制一半所以+1lseek(src, 0, SEEK_SET);//光标while(1){count = read(src,buf,sizeof(buf));num +=count;if(num >n){write(dest,buf,n%sizeof(buf));break;}write(dest,buf,count);}	printf("父进程\n");}else if(pid == 0)//子进程执行的代码{sleep(0.1);//确保子进程在父进程之后int src = -1;if((src = open("./01dir.c",O_RDONLY))== -1)//被复制的文件以只读的形式打开{perror("src open error");return -1;}int dest = -1;if((dest = open("./zy.txt",O_RDWR|O_CREAT|O_APPEND,0665))== -1)//目标文件以追加的方式打开{perror("dest open error");return -1;}lseek(dest,20,SEEK_SET);n = (lseek(src, 0, SEEK_END)+1)/2;//遇到奇数时候确保能复制一半所以+1lseek(src, n, SEEK_SET);//光标偏移到下半开始的地方while(1){count = read(src,buf,sizeof(buf));if(count ==0){break;}write(dest,buf,count);}		printf("子进程\n");}exit(0);wait(NULL);return 0;
}

2> 详细绘制思维导图

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

相关文章:

  • 搜维尔科技:Manus VR数据手套-适用于机器人、人工智能和机器学习解决方案
  • 知识文库杂志知识文库杂志社知识文库编辑部2024年第12期目录
  • 【Linux网络编程】套接字Socket
  • es之must、filter、must_not、should
  • RocketMQ消息发送基本示例(推送消费者)
  • 23 MySQL基本函数、分组查询、多列排序(3)
  • PHP与SEO,应用curl库获取百度下拉关键词案例!
  • MySQL:子查询
  • C++—— IO流
  • vue+node后台处理大文件切片上传--前端部分
  • 【通俗理解】艺术与数学交融
  • 深入探讨 Docker 容器文件系统
  • 《LeetCode热题100》---<4.子串篇三道>
  • 全国区块链职业技能大赛样题第9套前端源码
  • 如何提高编程面试成功率:LeetCode Top 100 问题及解答解析(详细面试宝典)
  • K-近邻和神经网络
  • 用EasyV全景图低成本重现真实场景,360°感受数字孪生
  • 【Golang 面试 - 进阶题】每日 3 题(九)
  • 孟德尔随机化、R语言,报错,如何解决?
  • 一文剖析高可用向量数据库的本质
  • JavaScript青少年简明教程:异常处理
  • 科普文:Lombok使用及工作原理详解
  • 飞致云开源社区月度动态报告(2024年7月)
  • mybatis-plus——实现动态字段排序,根据实体获取字段映射数据库的具体字段
  • redis:Linux安装redis,redis常用的数据类型及相关命令
  • JavaScript 和 HTML5 Canvas实现图像绘制与处理
  • Java之Java基础二十(集合[上])
  • 【C++BFS】1162. 地图分析
  • 实战:安装ElasticSearch 和常用操作命令
  • React-Native 宝藏库大揭秘:精选开源项目与实战代码解析