#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#define MAX_SIZE 1024
int main(int argc,char *argv[])
{
int read_num;
int write_num;
int read_fd;
int write_fd;
char buff[MAX_SIZE];
if(argc != 3)
{
printf("%s fromfile tofile/n",argv[0]);
}
read_fd = open(argv[1],O_RDONLY);
if(read_fd == -1)
{
printf("open %s failure!\n",argv[1]);
exit(1);
}
write_fd = open(argv[2],O_CREAT|O_WRONLY,S_IWUSR);
if(write_fd == -1)
{
printf("create %s failure!\n",argv[2]);
exit(1);
}
while(read_num = read(read_fd,buff,MAX_SIZE)) //未读取完时(!= 0)
{
if(read_num == -1) //读取出错时
{
printf("read date from %s fail\n",argv[1]);
break;
}
else
{
char *p = buff;
while(1)
{
write_num = write(write_fd,p,read_num);
if(write_num == -1)
{
printf("write date to %s fail\n",argv[2]);
break;
}
if(write_num == read_num | write_num == 0) //写完一组或全部写完
{
break;
}
if(write_num > 0)
{
p = p + write_num;
read_num = read_num - write_num;
}
}
}
}
close(read_fd);
close(write_fd);
return 0;
}