#include <apue.h>
#include <fcntl.h>
/*
4.6
*/
int my_cp(char *dest,char *src){
int s_field,d_field;
if ((s_field = open(src, O_RDONLY))<0){
err_sys("open source file error!");
exit(0);
}
struct stat s;
stat(src,&s);
int src_size = s.st_size;
/*
lseek 会改变文件偏移量
int src_size = lseek(s_field,0,SEEK_END);
*/
char *buf = (char*)malloc(sizeof(char)*src_size+8);
if((read(s_field,buf,src_size))<src_size){
err_sys("read error!");
}
//spilt
int cnt=0;
for(int i=0;i<src_size;i++){
if (buf[i]!='\0'){
buf[cnt++]=buf[i];
}
}
close(s_field);
if ((d_field = creat(dest,O_RDWR))<0){
err_sys("open dest file error!");
exit(0);
}
if (write(d_field,buf,cnt)<cnt){
err_sys("write error!");
}
close(d_field);
return 1;
}
int main(int argc,char *argv[]){
if (argc!=3){
err_sys("input error!");
}
char *dest = argv[1];
char *src = argv[2];
my_cp(dest,src);
return 0;
}