1 #define _LARGEFILE_SOURCE //1-3:定义宏:才能让系统支持大于2GB文件复制操作。
2 #define _LARGEFILE64_SOURCE
3 #define _FILE_OFFSET_BITS 64
4 #include<stdio.h>
5 #include<string.h>
6 #include<stdlib.h>
7 #include<fcntl.h>
8
9 int main(int argc,char *argv[])
10 {
11 int fd_src,fd_des;
12 char buf[128];
13 int num;
14 if(argc-3) //如果参数格式不是 cp file_src file_des,则报错退出。
15 {
16 printf("the format must be:cp file_src file_des");
17 exit(EXIT_FAILURE);
18 }
19
20 if((fd_src=open(argv[1],O_RDONLY))==-1) // 如果文件不存在,则报错退出。
21 {
22 perror("open1");
23 exit(EXIT_FAILURE);
}
25
26 if((fd_des=open(argv[2],O_CREAT|O_EXCL|O_WRONLY,0644))==-1)// 以写的方式打开文件,O_EXCl:如果目标文件存在,报错。
27 {
28 perror("open2");
29 exit(EXIT_FAILURE);
30 }
31
32 do
33 {
34 num=read(fd_src,buf,128); //读源文件
35 write(fd_des,buf,num); // 写入目标文件
36 }while(num==128);
37 close(fd_src);
38 close(fd_des); //关闭文件
39 return 0;
40 }