mycopy.c
来源:互联网 发布:老男孩网络上课方式 编辑:程序博客网 时间:2024/06/06 03:54
#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<stdlib.h>#include<errno.h>#include<string.h>#include<unistd.h>#include<stdio.h>int main(int argc,char *argv[]){ int ffd,tfd; int byteread,bytewrite; char buffer[1024]; char *ptr; if(argc != 3)//命令行参数不是三个,显示参数错误 { printf("parameter fault"); exit(1); } if((ffd = open(argv[1],O_RDONLY)) == -1) //原文件打开错误 { printf("fail to open source file"); exit(1); } if((tfd = open(argv[2],O_WRONLY|O_CREAT,S_IWUSR)) == -1)//新文件创建错误 { printf("fail to create target file"); exit(1); } while(byteread = read(ffd,buffer,1024)) //每次读取1024比特 { if((byteread == -1)&&(errno != EINTR)) break;//读取错误 else if(byteread > 0) //把读到的写入另一个文件 { ptr = buffer; while(bytewrite = write(tfd,ptr,byteread)) { if((bytewrite == -1)&&(errno != EINTR)) break; //写入错误 else if(bytewrite == byteread) break; else if(bytewrite > 0) { ptr = ptr + bytewrite; byteread = byteread - bytewrite; } } if(bytewrite == -1) break; } } close(ffd); close(tfd); exit(0);}
0 0