IO进程线程day4作业

1、使用多进程完成两个文件的拷贝,父进程拷贝前一半,子进程拷贝后一半,父进程回收子进程的资源

代码:

#include<myhead.h>
int main(int argc, const char *argv[])
{
	//定义两个文件指针
	FILE *fp1=NULL;
	FILE *fp2=NULL;
	//创建子进程
	pid_t pid = fork();
	if(pid > 0)
	{
		//在父进程中打开被拷贝文件
		if((fp1=fopen("./test.txt","r"))==NULL)
		{
			perror("fopen error");
			return -1;
		}

		//在父进程中打开拷贝文件
		if((fp2=fopen("./copy.txt","w"))==NULL)
		{
			perror("fopen error");
			return -1;
		}
		
		//确定位置
		fseek(fp1,0,SEEK_END);
		size_t size = ftell(fp1);
		fseek(fp1,0,SEEK_SET);

		//读取并复制文件内容
		char c;
		while(ftell(fp1)<=size/2)
		{
			fread(&c,1,1,fp1);
			fwrite(&c,1,1,fp2);				
		}

		//关闭文件
		fclose(fp1);
		fclose(fp2);
	}

	else if(pid==0)
	{
		//在子进程中打开被拷贝文件
		if((fp1=fopen("./test.txt","r"))==NULL)
		{
			perror("fopen error");
			return -1;
		}

		//在子进程中打开拷贝文件
		if((fp2=fopen("./copy.txt","a"))==NULL)
		{
			perror("fopen error");
			return -1;
		}
		//确定位置
		fseek(fp1,0,SEEK_END);
		size_t size = ftell(fp1);
		int t=fseek(fp1,size/2,SEEK_SET);

		//判断位置是否合法
		if(t!=0)
		{
			printf("error\n");
			return -1;
		}

		//读取并复制文件内容
		char x;
		while(fread(&x,1,1,fp1))
		{
			fwrite(&x,1,1,fp2);	
		}
		
		//关闭文件
		fclose(fp1);
		fclose(fp2);
		exit(0);

	}
	//阻塞回收进程资源
	wait(NULL);

	
	return 0;
}

运行结果:

思维导图: 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/397923.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

open3d 点云体素化

open3d 点云体素化 一、算法原理1.从点云到体素化&#xff08;主要函数&#xff09;2.从网格到体素化&#xff08;主要函数&#xff09; 二、代码三、结果1.从点云到体素化2.从网格到体素化 四、相关数据 一、算法原理 点云和三角网格是非常灵活但不规则的几何类型。体素网格是…

Mybatis | 初识Mybatis

初识Mybatis 目录: 初识Mybatis什么是Mybatis&#xff1f;Hibernate 和 MyBatis的区别&#xff1f;Mybatis的下载和使用Mybatis的工作原理 作者简介 &#xff1a;一只大皮卡丘&#xff0c;计算机专业学生&#xff0c;正在努力学习、努力敲代码中! 让我们一起继续努力学习&#…

微信小程序之会议OA个人中心后台交互

目录 获取用户昵称头像和昵称 小程序登录 登录-小程序 wx.checkSession wx.login wx.request 后台 准备数据表 反向生成工具生成 准备封装前端传过来的数据 小程序服器配置 导入微信小程序SDK application.yml WxProperties WxConfig WxAuthController 登录-小…

目录的共享与访问的实现

给用户机赋予读取文件的权利 创建文件夹&文件 点击属性–>共享–>共享&#xff08;S&#xff09; 点击添加–》给需要赋权的用户赋予相应的权限–>应用–确定 在赋权的用户机里winR–>‘\’‘IP地址&#xff08;主机&#xff09;’

常用的消息中间件RabbitMQ

目录 一、消息中间件 1、简介 2、作用 3、两种模式 1、P2P模式 2、Pub/Sub模式 4、常用中间件介绍与对比 1、Kafka 2、RabbitMQ 3、RocketMQ RabbitMQ和Kafka的区别 二、RabbiMQ集群 RabbiMQ特点 RabbitMQ模式⼤概分为以下三种: 集群中的基本概念&#xff1a; 集…

Open AI Sora的出现,大大改变ai视频内容生成赛道的格局

前言&#xff1a;在人工智能&#xff08;AI&#xff09;技术的迅猛发展下&#xff0c;我们见证了无数令人惊叹的创新&#xff0c;它们正逐渐重塑我们对可能性的认知。在这一浪潮中&#xff0c;OpenAI 的最新力作——Sora模型&#xff0c;以其在视频生成领域的革命性突破&#x…

mysql调优实战

EXPLAIN执行分析 id:值越大越先执行相同时&#xff0c;由上向下执行。 possible_key: 可能走索引的键。 key&#xff1a;真正走索引的键rows:根据表统计信息及索引选用情况&#xff0c;大致估算出找到所需的记录所需要读取的行数&#xff0c;也就是说&#xff0c;用的越少越好 …

动态获取 微信小程序appid / 自定义启动命令

官网&#xff1a;https://uniapp.dcloud.net.cn/collocation/package.html#%E7%94%A8%E6%B3%95 小程序开发完成之后需要一套代码多个小程序使用&#xff0c;每次都需要在manifest.json文件中手动修改&#xff0c;大大增加了开发的复杂度。 官网&#xff1a;https://uniapp.dcl…

市场复盘总结 20240220

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 19% 最常用…

Android---Retrofit实现网络请求:Java 版

简介 在 Android 开发中&#xff0c;网络请求是一个极为关键的部分。Retrofit 作为一个强大的网络请求库&#xff0c;能够简化开发流程&#xff0c;提供高效的网络请求能力。 Retrofit 是一个建立在 OkHttp 基础之上的网络请求库&#xff0c;能够将我们定义的 Java 接口转化为…

【Vue3】路由传参的几种方式

路由导航有两种方式&#xff0c;分别是&#xff1a;声明式导航 和 编程式导航 参数分为query参数和params参数两种 声明式导航 query参数 一、路径字符串拼接(不推荐) 1.传参 在路由路径后直接拼接?参数名:参数值 &#xff0c;多组参数间使用&分隔。 <RouterLink …

OpenGL学习——17.模型

前情提要&#xff1a;本文代码源自Github上的学习文档“LearnOpenGL”&#xff0c;我仅在源码的基础上加上中文注释。本文章不以该学习文档做任何商业盈利活动&#xff0c;一切著作权归原作者所有&#xff0c;本文仅供学习交流&#xff0c;如有侵权&#xff0c;请联系我删除。L…

算法——数值算法——牛顿迭代法

目录 牛顿迭代法 一、1021: [编程入门]迭代法求平方根 牛顿迭代法 迭代法&#xff08;Iteration&#xff09;是一种通过反复递推计算来逼近解的方法。而牛顿迭代法&#xff08;Newtons method&#xff09;则是一种特定的迭代法&#xff0c;用于求解方程或函数的根、最小值、最…

【软考中级备考笔记】计算机体系结构

计算机体系结构 2月19日 – 天气&#xff1a;阴转小雪 1. 冯诺依曼计算机体系结构 冯诺依曼将计算机分为了五大部分&#xff0c;分别是&#xff1a; 控制器&#xff1a;主要负责协调指令到执行运算器&#xff1a;负责算数和逻辑运算存储器&#xff1a;负责存储在指令执行过程…

Javaweb之SpringBootWeb案例之切入点表达式的详细解析

3.3 切入点表达式 从AOP的入门程序到现在&#xff0c;我们一直都在使用切入点表达式来描述切入点。下面我们就来详细的介绍一下切入点表达式的具体写法。 切入点表达式&#xff1a; 描述切入点方法的一种表达式 作用&#xff1a;主要用来决定项目中的哪些方法需要加入通知 …

SOPHON算能科技新版SDK环境配置以及C++ demo使用过程

目录 1 SDK大包下载 2 获取SDK中的库文件和头文件 2.1 注意事项 2.2 交叉编译环境搭建 2.2.1 首先安装工具链 2.2.2 解压sophon-img包里的libsophon_soc__aarch64.tar.gz&#xff0c;将lib和include的所有内容拷贝到soc-sdk文件夹 2.2.3 解压sophon-mw包里的sophon-mw-s…

【Simulink系列】——动态系统仿真 之 连续系统线性连续系统

声明&#xff1a;本系列博客参考有关专业书籍&#xff0c;截图均为自己实操&#xff0c;仅供交流学习&#xff01; 一、连续系统定义 连续系统输出在时间上连续变化&#xff0c;而非间隔采样取值&#xff0c;满足以下条件&#xff1a; ①输出连续变化&#xff0c;变化的间隔…

java中实体pojo对于布尔类型属性命名尽量别以is开头,否则 fastjson可能会导致属性读取不到

假如我们有一个场景&#xff0c;就是需要将一个对象以字符串的形式&#xff0c;也就是jsonString存到一个地方&#xff0c;比如mysql&#xff0c;或者redis的String结构。现在有一个实体&#xff0c;我们自己创建的&#xff0c;叫做CusPojo.java 有两个属性是布尔类型的&#x…

删除有序数组中的重复项 II

题目链接 删除有序数组中的重复项 II 题目描述 注意点 nums 已按升序排列1 < nums.length < 30000原地删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次返回删除后数组的新长度 解答思路 因为数组是按升序排列的&#xff0c;可以使用将某个区间…

[C#]winform基于opencvsharp结合pairlie算法实现低光图像增强黑暗图片变亮变清晰

【低光图像增强介绍】 在图像处理领域&#xff0c;低光图像增强是一个具有挑战性的任务。由于光线不足&#xff0c;这些图像往往呈现出低对比度、高噪声和细节丢失等问题&#xff0c;严重影响了图像的视觉效果和后续分析的准确性。因此&#xff0c;开发有效的低光图像增强方法…
最新文章