#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define BUFSIZE 1024
int main(int argc,char *argv[])
{
if(argc < 3) {
fprintf(stderr,"Usage:%s <src> <dst>\n",argv[0]);
exit(1);
}
int fds,fdd,len,pos,ret;
char buf[BUFSIZE];
fds=open(argv[1],O_RDONLY);
if(fds < 0) {
perror("open():");
exit(1);
}
fdd=open(argv[2],O_CREAT|O_WRONLY|O_TRUNC,0600);
if(fdd < 0) {
close(fds);
perror("open():");
exit(1);
}
while(1) {
len=read(fds,buf,BUFSIZE);
if(len < 0) {
perror("read()");
break;
}
if(len == 0) {
break;
}
pos=0;
while(len > 0) {
ret=write(fdd,buf+pos,len);
if(ret < 0) {
perror("write()");
exit(1);
}
pos+=ret;
len-=ret;
}
}
close(fdd);
close(fds);
exit(0);
}