linux下文件拷贝代码
#include <stdio.h>
#include <stdlib.h>#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#define BUFF_SIZE 1024
int main(int argc,char *argv[])
{
int from_fp;
int to_fp;
char buffer[BUFF_SIZE];
int read_size;
int write_size;
char *ptr;
if(argc != 3)//个数不是三个出错
{
printf("error%s\n",strerror(errno));
exit(EXIT_FAILURE);
}
//打开文件
if((from_fp = open(argv[1],O_RDONLY)) == -1)
{
printf("open %s failure\n",argv[1]);
exit(EXIT_FAILURE);
}
if((to_fp = open(argv[2],O_WRONLY | O_CREAT | O_TRUNC,S_IRUSR | S_IWUSR)) == -1)
{
printf("open %s failure\n",argv[2]);
exit(EXIT_FAILURE);
}
while((read_size = read(from_fp,buffer,BUFF_SIZE)) != 0)
{
if(read_size == -1)
{
printf("read %s error\n",argv[1]);
break;
}
if(read_size > 0)
{
ptr = buffer;
while(write_size = write(to_fp,buffer,read_size))
{
if(write_size == -1)
{
printf("write %s error\n",argv[2]);
break;
}
if(write_size == read_size)//都写进去了
{
break;
}
else if(write_size > 0)//写了一部分
{
ptr += write_size;
read_size = read_size - write_size;
}
}
if(write_size == -1)
{
break;
}
}
}
close(from_fp);
close(to_fp);
return 0;
}