linux实现复制文件的两种方法

简介: linux实现复制文件的两种方法

分享在linux系统下拷贝文件的两种方法:

1

使用系统调用的read和write实现文件拷贝:


1. #include <stdio.h>
2. #include <sys/types.h>
3. #include <sys/stat.h>
4. #include <fcntl.h>
5. #include <unistd.h>
6. #include <time.h> 
7. #define N 32
8. 
9. int main(int argc, const char *argv[])
10. {
11.   clock_t start, end;
12.   double cpu_time_used;
13.   start = clock();
14. 
15.   int fd_r = open(argv[1], O_RDONLY);
16.   if(fd_r == -1)
17.   {
18.     printf("open error\n");
19.     return -1;
20.   }
21. 
22.   int fd_w = open(argv[2], O_RDWR|O_CREAT|O_TRUNC, 0664);
23.   if(fd_w == -1)
24.   {
25.     printf("open error\n");
26.     return -1;
27.   }
28. 
29.   char buf[N];
30.   int ret = 0;
31. 
32.   while((ret = read(fd_r, buf, N)) > 0)
33.   {
34.     write(fd_w, buf, ret);
35.   }
36.   printf("copy ok\n");
37. 
38.   close(fd_r);
39.   close(fd_w);
40. 
41.   end = clock();
42.   cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
43. 
44. printf("运行时间:%d s",cpu_time_used);
45.   return 0;
46. }


测试:


 

2

使用fputc和fgetc等库函数实现文件拷贝:


1. //使用fgetc、fputc完成文件的拷贝操作
2. #include <stdio.h>
3. #include <time.h>
4. 
5. int main(int argc, const char *argv[])
6. {
7. clock_t start, end;
8. double cpu_time_used;
9.         start = clock();
10. 
11. if(argc < 3)
12.         {
13. printf("Usage : %s <src_file> <dst_file>\n", argv[0]);
14. return -1;
15.         }
16. 
17.         FILE *fp_r = fopen(argv[1], "r");
18. if(fp_r == NULL)
19.         {
20. printf("fp_r fopen error\n");
21. return -1;
22.         }
23. 
24.         FILE *fp_w = fopen(argv[2], "w");
25. if(fp_w == NULL)
26.         {
27. printf("fp_w fopen error\n");
28. return -1;
29.         }
30. 
31. int ret = 0;
32. 
33. while((ret = fgetc(fp_r)) != EOF)
34.         {
35. fputc(ret, fp_w);
36.         }
37. printf("copy ok\n");
38. 
39. fclose(fp_r);
40. fclose(fp_w);
41. 
42.         end = clock();
43.         cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
44. 
45. printf("运行时间:%d s",cpu_time_used);
46. return 0;
47. }


测试:

 

最终目录结构:


 

目录
相关文章
|
1月前
|
Ubuntu Linux 网络安全
在Linux上安装软件有多种方法
在Linux上安装软件有多种方法
107 64
|
16天前
|
Linux Shell 数据库
文件查找是Linux用户日常工作的重要技能介绍了几种不常见的文件查找方法
文件查找是Linux用户日常工作的重要技能。本文介绍了几种不常见的文件查找方法,包括使用`find`和`column`组合、`locate`和`mlocate`快速查找、编写Shell脚本、使用现代工具`fd`、结合`grep`搜索文件内容,以及图形界面工具如`Gnome Search Tool`和`Albert`。这些方法能显著提升文件查找的效率和准确性。
38 2
|
22天前
|
运维 Linux
Linux查找占用的端口,并杀死进程的简单方法
通过上述步骤和命令,您能够迅速识别并根据实际情况管理Linux系统中占用特定端口的进程。为了获得更全面的服务器管理技巧和解决方案,提供了丰富的资源和专业服务,是您提升运维技能的理想选择。
24 1
|
22天前
|
运维 安全 Linux
Linux文件清空的五种方法总结分享
每种方法各有优势,选择最合适的一种或几种,可以极大提高您的工作效率。更多有关Linux系统管理的技巧与资源,欢迎访问,持续提升您的运维技能。
61 1
|
1月前
|
Linux 数据安全/隐私保护 索引
linux inode索引节点使用率100% 解决+hustoj忘记密码+最新MDK注册方法
linux inode索引节点使用率100% 解决+hustoj忘记密码+最新MDK注册方法
42 1
|
1月前
|
监控 安全 Linux
使用NRPE和Nagios监控Linux系统资源的方法
通过遵循以上步骤,可以有效地使用NRPE和Nagios监控Linux系统资源,确保系统运行稳定,并及时响应任何潜在的问题。这种方法提供了高度的可定制性和灵活性,适用于从小型环境到大型分布式系统的各种监控需求。
44 2
|
2月前
|
Shell Linux Python
python执行linux系统命令的几种方法(python3经典编程案例)
文章介绍了多种使用Python执行Linux系统命令的方法,包括使用os模块的不同函数以及subprocess模块来调用shell命令并处理其输出。
35 0
|
3月前
|
Ubuntu Linux 虚拟化
安装Windows Linux 子系统的方法:适用于windows 11 版本
本文提供了在Windows 11系统上安装Linux子系统(WSL)的详细步骤,包括启用子系统和虚拟化功能、从Microsoft Store安装Linux发行版、设置WSL默认版本、安装WSL2补丁,以及完成Ubuntu的首次安装设置。
882 2
|
3月前
|
Ubuntu Linux
在Linux中,软件安装和卸载的常见方法?
在Linux中,软件安装和卸载的常见方法?
|
3月前
|
缓存 监控 网络协议
在Linux中,性能调优都有哪几种方法?
在Linux中,性能调优都有哪几种方法?