IO进程线程day4作业

这篇具有很好参考价值的文章主要介绍了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;
}

运行结果:

IO进程线程day4作业,算法

思维导图: 

IO进程线程day4作业,算法

IO进程线程day4作业,算法 文章来源地址https://www.toymoban.com/news/detail-832042.html

到了这里,关于IO进程线程day4作业的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT DAY4作业

    1. 头代码 源代码 效果图 2.思维导图

    2024年02月02日
    浏览(44)
  • 【驱动开发day4作业】

    头文件代码  应用层代码  驱动代码

    2024年02月15日
    浏览(28)
  • QT 作业 day4 7/28

    1.思维导图     2.手动完成服务器实现 .h .cpp

    2024年02月15日
    浏览(44)
  • 大模型实战营Day4 XTuner 大模型单卡低成本微调实战 作业

    按照文档操作: 单卡跑完训练: 按照要求更改微调的数据: 完成微调数据的脚本生成: 修改配置文件: 替换好文件后启动: 启动后终端如图: 用于微调的一些数据显示: 训练时间,loss: 可见模型是经过微调数据反复纠正,慢慢被引导向微调设计者所想的方向: 3个epoch完

    2024年01月20日
    浏览(39)
  • IO 与进程线程

    2023年05月28日
    浏览(29)
  • 【趣学算法】Day4 分治算法——二分搜索

    14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法! ❤️一名热爱Java的大一学生,希望与各位大佬共同学习进步❤️ 🧑个人主页:@周小末天天开心 各位大佬的点赞👍 收藏⭐ 关注✅,是本人学习的最大动力 感谢! 📕该

    2024年02月07日
    浏览(25)
  • 算法训练day4:栈与队列

    那么我这里再列出四个关于栈的问题,大家可以思考一下。以下是以C++为例,使用其他编程语言的同学也对应思考一下,自己使用的编程语言里栈和队列是什么样的。 C++中stack 是容器么? 我们使用的stack是属于哪个版本的STL? 我们使用的STL中stack是如何实现的? stack 提供迭

    2024年02月01日
    浏览(26)
  • 算法打卡|Day4 链表part02

    今日任务 ● 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II 目录 Day4 链表part02 Problem: 24. 两两交换链表中的节点 思路 解题方法 Code Code Problem: 19. 删除链表的倒数第 N 个结点 思路 解题方法 Code Problem: 面试题 02.07. 链表相交

    2024年02月08日
    浏览(33)
  • 代码随想录算法训练day4 | 链表

    目录 24. 两两交换链表节点 19. 删除链表倒数第n个节点 方法一:普通写法 方法二:双指针法 面试题:找链表相交节点 142. 判断环形链表 虚拟头节点的本质意义在于减少了特殊情况的处理。不用判断该节点是否在链表的第一位。 定义快慢两个指针。 fast先走n步,再让fast和s

    2024年02月04日
    浏览(40)
  • 数据结构与算法学习(day4)——解决实际问题

    在本章的学习此前,需要复习前三章的内容,每个算法都动手敲一遍解题。宁愿学慢一点,也要对每个算法掌握基本的理解! 前面我们学习了简化版桶排序、冒泡排序和快速排序三种算法,今天我们来实践一下前面的三种算法。 本章的学习目标: (1)回顾三个算法的基本原

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包