思路就是定义一个字符串数组,然后从原文件不停的读,再不停的写到新的文件。当读完的时候返回值为0,跳出循环。
需要注意的地方是读的时候要读的个数比总长度少一个
ret = read(fd_from,buf,sizeof(buf) - 1);
1 #include <stdio.h>2 #include <stdlib.h>3 #include <unistd.h>4 #include <sys/types.h>5 #include <sys/stat.h>6 #include <fcntl.h>7 #include <error.h>8 9 int main(int argc, char *argv[])10 {11 if(argc !&#61; 3)12 {13 printf("error\n");14 exit(1);15 }
16 int fd_from &#61; open(argv[1], O_RDONLY);17 if(-1 &#61;&#61; fd_from)18 {19 perror("open1");20 exit(2);21 }22 int fd_to &#61; open(argv[2], O_WRONLY | O_CREAT, 00700);23 if(-1 &#61;&#61; fd_to)24 {25 perror("open2");26 exit(3);27 }28 int buf[128] &#61; {0};29 ssize_t ret;30 while(1)31 {32 ret &#61; read(fd_from,buf,sizeof(buf) - 1);33 if(-1 &#61;&#61; ret)34 {35 perror("read");36 }37 else if(0 &#61;&#61; ret)38 {39 printf("拷贝完毕\n");40 break;41 }42 ret &#61;&#61; write(fd_to,buf,ret);43 if(-1 &#61;&#61; ret)44 {46 }47 }48 close(fd_from);49 close(fd_to);50 return 0;51 }