Linux下的C語言程式設計——系統呼叫read和write函式實現檔案拷貝
阿新 • • 發佈:2019-02-06
系統呼叫read和write函式實現檔案拷貝
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcnyl.h> #include <stdlib.h> #include <errno.h> #define SIZE 1024 int main() { int from_fd; int to_fd; int nread; int nwrite; char buff[SIZE]; char *ptr; if(argc != 3) { fprintf(stderr,"Usage: %s fromfile tofile\n\a",argv[0]); exit(-1); } if((from_fd = open(argv[1],O_RDONLY)) == -1) { fprintf(stderr,"open %serror: %s\n",argv[1],strerror(errno)); exit(-1); } if((to_fd = open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR)) == -1) { fprintf(stderr,"open %serror: %s\n",argv[2],strerror(errno)); exit(-1); } while(nread = read(from_fd,buffer,SIZE)) { if((nread == -1) && (errno != EINTR)) { break; } else if(nread > 0) { ptr = buffer; while(nwrite = write(to_fd,ptr,nread)) { if((nwrite == -1) && (errno != EINTR)) { break; } else if(nwrite == nread) { break; } else if(n_write > 0) { ptr += nwrite; nread -= nwrite; } } if(nwrite == -1) { break; } } } close(from_fd); close(to_fd); exit(0); return 0; }