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

day27——homework

1、使用两个线程完成两个文件的拷贝,分支线程1拷贝前一半,分支线程2拷贝后一半,主线程回收两个分支线程的资源

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <fcntl.h>
#include <unistd.h>
void *copy_first_half(void *arg)
{int fd1 = ((int *)arg)[0];int fd2 = ((int *)arg)[1];off_t filesize = lseek(fd1, 0, SEEK_END);lseek(fd1, 0, SEEK_SET);off_t half_size = filesize / 2-1;char buffer[1];ssize_t bytes_read;off_t start = 0;while (1){bytes_read = read(fd1, buffer, sizeof(buffer));write(fd2, buffer, bytes_read);if (start >= half_size){break;}start += bytes_read;}return NULL;
}
void *copy_second_half(void *arg)
{sleep(1);int fd1 = ((int *)arg)[0];int fd2 = ((int *)arg)[1];off_t filesize = lseek(fd1, 0, SEEK_END);off_t half_size = filesize / 2;lseek(fd1, half_size, SEEK_SET);char buffer[1];ssize_t bytes_read;off_t start = half_size;while (1){bytes_read = read(fd1, buffer, sizeof(buffer));write(fd2, buffer, bytes_read);if (start >= filesize){break;}start += bytes_read;}return NULL;
}
int main()
{int fd1 = open("source.txt", O_RDONLY | O_CREAT, 0664);int fd2 = open("destination.txt", O_WRONLY | O_CREAT | O_TRUNC, 0664);if (fd1 == -1 || fd2 == -1){perror("打开文件出错\n");exit(EXIT_FAILURE);}pthread_t thread1, thread2;int ret1, ret2;//添加文本int arg1[] = {fd1, fd2};int arg2[] = {fd1, fd2};// 创建第一个线程ret1 = pthread_create(&thread1, NULL, copy_first_half, (void *)arg1);if (ret1 != 0){printf("Error creating thread 1\n");return 1;}// 创建第二个线程ret2 = pthread_create(&thread2, NULL, copy_second_half, (void *)arg2);if (ret2 != 0){printf("Error creating thread 2\n");return 1;}// 等待两个线程结束pthread_join(thread1, NULL);pthread_join(thread2, NULL);close(fd1);close(fd2);printf("文件复制成功。\n");return 0;
}

相关文章:

day27——homework

1、使用两个线程完成两个文件的拷贝&#xff0c;分支线程1拷贝前一半&#xff0c;分支线程2拷贝后一半&#xff0c;主线程回收两个分支线程的资源 #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <fcntl.h> #include <uni…...

shell脚本自动化部署

1、自动化部署DNS [rootweb ~]# vim dns.sh [roottomcat ~]# yum -y install bind-utils [roottomcat ~]# echo "nameserver 192.168.8.132" > /etc/resolv.conf [roottomcat ~]# nslookup www.a.com 2、自动化部署rsync [rootweb ~]# vim rsync.sh [rootweb ~]# …...

C语言| 文件操作详解(二)

目录 四、有关文件的随机读写函数 4.1 fseek 4.2 ftell 4.3 rewind 五、判定文件读取结束的标准与读写文件中途发生错误的解决办法 5.1 判定文件读取结束的标准 5.2 函数ferror与feof 5.2.1 函数ferror 5.2.2 函数feof 在上一章中&#xff0c;我们主要介绍了文件类型…...

保证项目如期上线,测试人能做些什么?

要保证项目按照正常进度发布&#xff0c;需要整个研发团队齐心协力。 有很多原因都可能会造成项目延期。 1、产品经理频繁修改需求 2、开发团队存在技术难题 3、测试团队测不完 今天我想跟大家聊一下&#xff0c;测试团队如何保证项目按期上线&#xff0c;以及在这个过程中可能…...

【杂谈】在大学如何学得计算机知识,浅谈大一经验总结

大学新生的入门经验简谈 我想在学习编程这条路上&#xff0c;很多同学感到些许困惑&#xff0c;摸爬滚打一年&#xff0c;转眼就要进入大二学习了&#xff0c;下面浅谈个人经验与反思总结。倘若说你是迷茫的&#xff0c;希望这点经验对你有帮助&#xff1b;但倘若你有更好的建…...

Superset二次开发之柱状图实现同时显示百分比、原始值、汇总值的功能

背景 柱状图贡献模式选择行,堆积样式选择Stack,默认展示百分比,可以展示每个堆积的百分比,但是无法实现同时展示百分比、原始值、汇总值的效果。借助Tooltip可以实现,但是不直观。 柱状图来自Echarts插件,可以先考虑Echarts的柱状图如何实现此需求,再研究Superset项目的…...

堆的创建和说明

文章目录 目录 文章目录 前言 小堆&#xff1a; 大堆&#xff1a; 二、使用步骤 1.创建二叉树 2.修改为堆 3.向上调整 结果实现 总结 前言 我们已经知道了二叉树的样子&#xff0c;但是一般的二叉树是没有什么意义的&#xff0c;所以我们会使用一些特殊的二叉树来进行实现&a…...

【玩转python】入门篇day14-函数

1、函数的定义 函数通过def定义&#xff0c;包括函数名、参数、返回值 # 定义函数 def test(a,b): # a,b表示形式参数print(a b)#函数体(具体的功能)return a*b #返回值# 函数调用 test(12,43) # 12和43表示实际参数,在调用函数时,会替换形式参数a,b下面这个展示了稍微复…...

uni-app 将base64图片转换成临时地址

function getTempFilePath(base64Data) {return new Promise((resolve, reject) > {const fs uni.getFileSystemManager()base64Data base64Data.split(,)[1]const fileName temp_image_ Date.now() .png // 自定义文件名&#xff0c;可根据需要修改const filePath un…...

C#用Socket实现TCP客户端

1、TCP客户端实现代码 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks;namespace PtLib.TcpClient {public delegate void Tcp…...

jmeter-beanshell学习15-输入日期,计算前后几天的日期

又遇到新问题了&#xff0c;想要根据获取的日期&#xff0c;计算出前面两天的日期。网上找了半天&#xff0c;全都是写获取当天日期&#xff0c;然后计算昨天的日期&#xff0c;照葫芦画瓢也没改出来想要的&#xff0c;最后求助了开发同学。 先放上网上获取当天&#xff0c;计…...

Zabbix 7.0 安装

在zabbix官网中有着比较完善的安装步骤&#xff0c;针对不同的系统都有。可以直接按照举例说明进行安装。本文只是针对其提供的安装步骤进行一些说明解释补充。 安装环境 操作系统版本&#xff1a;AlmaLinux 9.4&#xff08;10.10.20.200&#xff09;zabbix版本&#xff1a;7.…...

软考高级-系统架构设计师

2024广东深圳考试时间 报考人员可登录中国计算机技术职业资格网&#xff08;http://www.ruankao.org.cn&#xff09;进行网上报名&#xff0c;报名前须扫码绑定个人微信&#xff0c;不允许代报名。 上半年考试报名信息填报时间&#xff1a;2024年3月25日9:00&#xff0d;4月2日…...

Notepad++ 安装 compare 插件

文章目录 文章介绍对比效果安装过程参考链接 文章介绍 compare 插件用于对比文本差异 对比效果 安装过程 搜索compare插件 参考链接 添加链接描述...

大数据技术原理-spark的安装

摘要 本实验报告详细记录了在"大数据技术原理"课程中进行的Spark安装与应用实验。实验环境包括Spark、Hadoop和Java。实验内容涵盖了Spark的安装、配置、启动&#xff0c;以及使用Spark进行基本的数据操作&#xff0c;如读取本地文件、文件内容计数、模式匹配和行数…...

第四范式上线搜广推一体化平台 赋能企业高效增长

产品上新 Product Release 今天&#xff0c;第四范式产品再度上新&#xff0c;正式升级并推出的“搜广推”一体化平台——天枢。 天枢拥有全面的用户画像分析、端到端的搜索推荐一体化、一站式流量运营管理等能力&#xff0c;集合智能搜索、智能推荐和智能推广三大能力于一身&a…...

智能小程序 Ray 开发面板 SDK —— 智能设备模型通用能力一键执行 SDK 汇总(一)

getTapToRunRules 描述 查询当前家庭下可绑定的一键执行列表&#xff0c;会去掉失效或自动化规则。 请求参数 参数数据类型说明是否必填devIdstring设备 ID&#xff0c;默认从设备环境中取否gidstring家庭 ID&#xff0c;默认从当前家庭中取否containStandardZigBeeboolean…...

特大喜讯:我的作品被河北某大学选做教材

...

将时间用于符合当下的未来思考——读《纳瓦尔宝典》

在财富积累的篇章中&#xff0c;倡导的核心理念是“不要通过出租时间来赚取收入”。沿着这条道路&#xff0c;可以通过以下智慧指引来避免不必要的迂回&#xff1a;首先&#xff0c;不要让自己深陷于日常的琐碎事务中&#xff0c;而应以开阔的心胸去探索和吸收新的知识。其次&a…...

CentOS-Stream-9仿冒Rocky-9通过Kolla-ansible部署OpenStack 2024.1

CentOS-Stream-9仿冒Rocky-9通过Kolla-ansible部署OpenStack 2024.1 OpenStack及Kolla项目的最新稳定版产品不再提供对CentOS-Stream-9的容器镜像支持&#xff0c;但考虑到 Rocky-9对RHEL/CentOS-Stream-9进行了binary级别的兼容&#xff0c;因此在CentOS-Stream-9上仿冒Rocky…...

OpenSpec 生成文件说明

proposal.md —— 为什么做、做什么&#xff08;产品/范围&#xff09; Why&#xff1a;要解决什么问题、机会是什么。What Changes&#xff1a;会新增/改掉/删掉哪些能力&#xff0c;有没有 BREAKING。Capabilities&#xff1a;会动到哪些能力名&#xff08;对应后面 specs/&l…...

半导体仿真进阶:如何用Silvaco DOPING语句精确控制掺杂分布

半导体仿真进阶&#xff1a;如何用Silvaco DOPING语句精确控制掺杂分布 在半导体器件设计与工艺开发中&#xff0c;精确控制掺杂分布是决定器件性能的关键因素之一。Silvaco TCAD工具链中的DOPING语句&#xff0c;为工程师提供了从简单均匀掺杂到复杂梯度分布的灵活控制能力。…...

3分钟搞定Mac外接显示器控制:MonitorControl完全指南

3分钟搞定Mac外接显示器控制&#xff1a;MonitorControl完全指南 【免费下载链接】MonitorControl MonitorControl/MonitorControl: MonitorControl 是一款开源的Mac应用程序&#xff0c;允许用户直接控制外部显示器的亮度、对比度和其他设置&#xff0c;而无需依赖原厂提供的软…...

告别模糊人像:AI驱动的面部增强新方案

告别模糊人像&#xff1a;AI驱动的面部增强新方案 【免费下载链接】DZ-FaceDetailer a node for comfyui for restore/edit/enchance faces utilizing face recognition 项目地址: https://gitcode.com/gh_mirrors/dz/DZ-FaceDetailer 在数字图像处理领域&#xff0c;人…...

掌握Web AR开发:从痛点到实战的AR.js技术指南

掌握Web AR开发&#xff1a;从痛点到实战的AR.js技术指南 【免费下载链接】AR.js Image tracking, Location Based AR, Marker tracking. All on the Web. 项目地址: https://gitcode.com/gh_mirrors/arj/AR.js Web AR开发痛点与解决方案 开发增强现实应用时&#xff0…...

如何5分钟构建专业级黑苹果EFI?OpCore Simplify让复杂配置一键搞定

如何5分钟构建专业级黑苹果EFI&#xff1f;OpCore Simplify让复杂配置一键搞定 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 副标题&#xff1a;告别…...

Obsidian Local Images Plus 终极指南:如何一键解决所有本地图片管理难题

Obsidian Local Images Plus 终极指南&#xff1a;如何一键解决所有本地图片管理难题 【免费下载链接】obsidian-local-images-plus This repo is a reincarnation of obsidian-local-images plugin which main aim was downloading images in md notes to local storage. 项…...

STP安全特性实战:如何用bpduguard和bpdufilter防止网络攻击(附真实案例)

STP安全特性实战&#xff1a;如何用bpduguard和bpdufilter防止网络攻击&#xff08;附真实案例&#xff09; 在企业网络架构中&#xff0c;生成树协议&#xff08;STP&#xff09;的安全防护常常被忽视&#xff0c;直到某天凌晨2点&#xff0c;值班工程师突然接到全网瘫痪的告警…...

7大核心优势!Windows环境PM2服务化终极解决方案:从痛点到实战的完整指南

7大核心优势&#xff01;Windows环境PM2服务化终极解决方案&#xff1a;从痛点到实战的完整指南 【免费下载链接】pm2-installer Install PM2 offline as a service on Windows or Linux. Mostly designed for Windows. 项目地址: https://gitcode.com/gh_mirrors/pm/pm2-ins…...

Qwen3-14B-Int4-AWQ助力运维智能化:日志分析与故障排查实战

Qwen3-14B-Int4-AWQ助力运维智能化&#xff1a;日志分析与故障排查实战 1. 运维工程师的日常痛点 凌晨三点&#xff0c;你的手机突然响起。系统告警显示某核心服务出现异常&#xff0c;你需要立即登录服务器查看日志。面对几十GB的日志文件&#xff0c;你不得不用grep、awk等…...