2024.2.21

1、用多线程进行文件拷贝

#include<myhead.h>//参数结构体创建
typedef struct INFO
{const char *srcfile;const char *destfile;int length;
}Info;//定义获取文件长度的函数
int get_file_len(const char *srcfile,const char *destfile){int srcfd,destfd;//只读形式打开源文件   if((srcfd=open(srcfile,O_RDONLY))==-1){perror("open error");return -1;}//打开目标文件,不存在创建if((destfd=open(destfile,O_WRONLY|O_CREAT|O_TRUNC,0664))==-1){perror("open error");return -1;}int len =lseek(srcfd,0,SEEK_END);close(srcfd);close(destfd);return len;
}//定义文件拷贝函数
int copy_file(const char *srcfile,const char *destfile,int start,int len){int srcfd,destfd;if((srcfd=open(srcfile,O_RDONLY))==-1){perror("open error");return -1;}if((destfd=open(destfile,O_WRONLY))==-1){perror("open error");return -1;}//移动文件的光标lseek(srcfd,start,SEEK_SET);lseek(destfd,start,SEEK_SET);int sum=0;//完成拷贝工作char buf[128]="";while(1){int res = read(srcfd,buf,sizeof(buf));sum +=res;if(sum>=len||res==0){write(destfd,buf,sizeof(buf));break;}write(destfd,buf,sizeof(buf));}//关闭文件close(srcfd);close(destfd);return sum;
}//分支线程
void *task(void *arg){Info buf = *(Info *)arg;copy_file(buf.srcfile,buf.destfile,buf.length/2,buf.length-buf.length/2);//线程退出pthread_exit(NULL);
}//主线程
int main(int argc, char const *argv[])
{//判断外部传参if(argc!=3){printf("input file error\n");printf("usage: ./a.out srcfile destfile");return -1;}//获取源文件长度int len=get_file_len(argv[1],argv[2]);//参数结构体赋值Info buf={argv[1],argv[2],len};//创建多线程pthread_t tid = 1;if(pthread_create(&tid,NULL,task,&buf)!=0){printf("pthread_create error\n");return -1;}copy_file(argv[1],argv[2],0,len/2);if(pthread_join(tid,NULL)==0)printf("拷贝成功\n");return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于vue的个性化推荐餐饮系统Springboot

项目&#xff1a;基于vue的个性化推荐餐饮系统Springboot 摘要 现代信息化社会下的数据管理对活动的重要性越来越为明显&#xff0c;人们出门可以通过网络进行交流、信息咨询、查询等操作。网络化生活对人们通过网上购物也有了非常大的考验&#xff0c;通过网上进行点餐的人也…

ctfshow web入门 web141-145

1.web141 ^\w$表示在开头和末尾匹配字母数字_&#xff0c;传入的v3值不能有字母数字_&#xff0c;即无字母的命令执行 php中1-phpinfo()是可以执行的&#xff0c;加减乘除都可以实现 这里或&#xff0c;异或&#xff0c;取反等运算都可以 这里采用羽师傅的异或脚本生成paylo…

用十篇论文聊聊关于使用LLM做query Rewrite的问题

一、什么是query改写&#xff1f; query改写其实理解起来很简单&#xff0c;就是把原始的query经历一系列的操作&#xff0c;然后变成另外一个query&#xff0c;从而达到提升召回率和准确率的效果。 query改写的过程中&#xff0c;这一系列的操作&#xff0c;其实是围绕两个方面…

网络原理 - HTTP/HTTPS(4)

HTTP响应详解 认识"状态码"(status code) 状态码表示访问一个页面的结果.(是访问成功,还是失败,还是其它的一些情况...).(响应结果如何) 学习状态码 -> 为了调试问题. 写服务器时,按照状态码的含义正确使用. 200 OK 这是最常见的状态码,表示访问成功. 抓包抓…

面试经典150题——单词规律

"Dont wait. The time will never be just right." - Napoleon Hill 1. 题目描述 2. 题目分析与解析 首先还是得把题目先读懂&#xff0c;我们直接来看看示例&#xff1a; 根据上面的示例&#xff0c;我们可以看出pattern其实就是表示单词出现的规律&#xff0c;每…

Linux中alarm/setitimer函数(信号函数)

alarm函数 函数原型&#xff1a; unsigned int alarm(unsigned int seconds); 函数描述&#xff1a;设置定时器&#xff08;闹钟&#xff09;。在指定seconds后&#xff0c;内核会给当前进程发送 14&#xff09;SIGALRM信号。进程收到该信号&#xff0c;默认动作终止。每个进程…

git工具

一、命令行工具 二、Git 客户端可视化工具-推荐 1.常用工具 tortoisegit 官网 https://tortoisegit.org/ 推荐 sourcetree 官网https://www.sourcetreeapp.com/ 2.tortoisegit安装 2.1 下载安装包 2.2 下载语言包 2.3 安装 2.4 安装语言包 5.使用 5.1 新建分支 5.2 切换分支…

python基础教程—总结篇

这篇是Python基础教程系列的总结篇&#xff0c;这里这个专栏的地址&#xff1a;《Python教程》 首先必须声明一点&#xff0c;这是基础教程&#xff0c;所以面向的是新人&#xff0c;没有学过Python的同学&#xff0c;所以这套教程并没有涉及到比较难的并发编程模块&#xff0…

数字世界的探索者:计算机相关专业电影精选推荐

目录 推荐计算机专业必看的几部电影 《黑客帝国》 《社交网络》 《乔布斯传》 《心灵捕手》 《源代码》 《盗梦空间》 《头号玩家》 《我是谁&#xff1a;没有绝对安全的系统》 《战争游戏》(WarGames) 《模仿游戏》(The Imitation Game) 《硅谷》(Silicon Valley) …

qt_day3

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//设置账户和密码的登录标签ui->lab1->setPixmap(QPixmap(":/pictrue/wodepeizhenshi.png"));…

51_蓝桥杯_独立按键

一 电路 注意&#xff1a;J5跳帽接到2~3引脚&#xff0c;使按键S4-S5四个按键的另外一端接地&#xff0c;从而成为4个独立按键。 二 独立按键工作原理 三 代码 代码1&#xff1a;按下S7点亮L1指示灯&#xff0c;松开按键&#xff0c;指示灯熄灭&#xff0c;按下S6点亮L2指示灯…

电流回路是分析电路图的基础,看看这个电路你会更明白

任何电器要想开始工作&#xff0c;都离不开供电&#xff0c;而要供电就离不开电源。电源有两个极即:电源正极()、电源负极(-)&#xff0c;电源要实现向负载供电&#xff0c;必须是电源正极()流出电流经负载再流回电源负极(-)&#xff0c;这时可以说这个电路构成了供电电流回路了…

阿里云幻兽帕鲁服务器续费还有优惠吗?老用户续费的价格很贵怎么办?

最近很多人在问&#xff0c;上个月买的阿里云幻兽帕鲁服务器续费是不是没有优惠了&#xff0c;因为他们发现续费的价格比之前贵了很多&#xff0c;之前是不到30元一个月。 其实目前的续费优惠是有的&#xff0c;有但不多&#xff0c;方法就是进入阿里云服务器ECS控制台&#x…

设计模式四:适配器模式

1、适配器模式的理解 适配器模式可以理解为有两个现成的类Adaptee和Target&#xff0c;它们两个是不能动的&#xff0c;要求必须使用B这个类来实现一个功能&#xff0c;但是A的内容是能复用的&#xff0c;这个时候我们需要编写一个转换器 适配器模式 Adaptee&#xff1a;被适…

【C++初阶】类和对象(上)

目录 一.类的引入 1.概念 2.类的定义 (1).语法规范 (2)命名规范 (3)类的访问限定符及封装 ①访问限定符 (4)类的两种定义 ①声明和定义全部放在类体中&#xff0c;需注意&#xff1a;成员函数如果在类中定义&#xff0c;编译器可能会将其当成内联函数处理。 ​编辑…

【IDEA使用安装】如何长期正常使用IDEA,告别弹窗?【2024年亲测】

IDEA最新使用指南 写在前面涉及知识1、官网下载最新版本IDEA2、安装IDEA版本3、正常使用IDEA软件4、作者寄语 写在前面 愉快的假期结束了&#xff0c;当然我们奋斗的步伐不能停止&#xff0c;随即迎来了2024年的全新挑战&#xff0c;学更多的知识&#xff0c;分享更多有用的硬…

langchain配置openai

langchain的新版很多操作都变了&#xff0c;国内使用openai也不大方便&#xff0c;好在发现了个宝藏网站&#xff0c;可以使用 网址&#xff0c;接口的调用与官网是完全一样的 langchain调用各种大模型非常方便&#xff0c;也不用担心接口经常变动&#xff0c;导致和gradio等程…

【Flink状态管理五】Checkpoint的设计与实现

文章目录 1. Checkpoint的整体设计2. Checkpoint创建源码解析2.1. DefaultExecutionGraphBuilder.buildGraph2.2. ExecutionGraph.enableCheckpointing 由于系统原因导致Flink作业无法正常运行的情况非常多&#xff0c;且很多时候都是无法避免的。对于Flink集群来讲&#xff0c…

opencv图像处理(一)

一. OpenCV 简介 OpenCV 是一个跨平台计算机视觉库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。 应用领域 1、人机互动 2、物体识别 3、图像分割 4、人脸识别 5、动作识别 6、运动跟踪 7、机器人 8、运动分析 9、机器视觉 10、…

整数分块 (因数平方和)(余数之和)

整数分块 文章目录 整数分块例题1&#xff1a;因数平方和分析:具体代码&#xff1a;__int128写法逆元写法 例题2&#xff1a;余数之和思想&#xff1a;代码 一般在算法中遇到时间复杂度为1e9的&#xff0c; 那么一次 O ( n ) O(n) O(n)的遍历无法解决问题 求 ∑ i 1 n [ n i ]…