#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#define BUFFSIZE 1024
int main(int argc,char *argv[])
{
int source_fd,target_fd,num;
char buf[BUFFSIZE];
if(argc != 3)
{
fprintf(stderr,"Usage:copy sourcefile targetfile\n");
exit(1);
}
if((source_fd = open(argv[1],O_RDONLY,S_IRWXU)) == -1)
{
fprintf(stderr,"sourcefile open failed!\n");
exit(2);
}
printf("%s\n",argv[1]);
if((target_fd = open(argv[2],O_WRONLY | O_CREAT | O_EXCL,S_IRWXU)) == -1)
{
if(errno = EEXIST)
{
fprintf(stderr,"the targetfile is exist!\n");
exit(3);
}
else
{
fprintf(stderr,"targetfile open failed!\n");
exit(3);
}
}
while((num = read(source_fd,buf,BUFFSIZE)) > 0)
{
if(write(target_fd,buf,num) != num)
{
fprintf(stderr,"targetfile write error!\n");
exit(4);
}
}
close(source_fd);
close(target_fd);
return 0;
}