文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>mycpy

mycpy

时间:2010-12-25  来源:xinxianhui

今天自己写了一个mycpy程序,实现的是将一个文件copy到另一个新建的文件。#include #include #include #include #include #include #define BUFSIZE 32int main(int argc, char **argv){        int fdr, fdw;        int ret;        char buf[BUFSIZE];        int rdlen, wrlen;        if (argc != 3){                fprintf(stderr, "argment....\n");                return 1;        }        fdr = open(argv[1], O_RDONLY);        if (fdr == -1){                perror(argv[1]);                return 1;        }        fdw = open(argv[2], O_CREAT | O_RDONLY | O_WRONLY | O_TRUNC, S_IRWXU);//这里目标文件可能需要在打开的时候创建O_CREAT,创建的权限是可读可写可执行S_IRWXU。并将文件指针指向文件的开始O_TRUNC,        if (fdw == -1){                perror(argv[2]);                return 1;        }                while(1){//当使用while循环时,不好设置条件的时候,可以使用‘1’作为条件,并在循环中用break跳出循环。                rdlen = read(fdr, buf, BUFSIZE);                if (rdlen == 0){                        break;//使用break跳出循环。                }                if (rdlen == -1){                        if (errno == EINTR){//注意这里的错误处理。read这个系统调用有可能会被中断打断。                                continue;                        }                        perror("read()");                        close(fdr);//注意这里的错误处理。                        close(fdw);                        return 1;                }                wrlen = 0;//留意这里的write文件处理,wrlen的初始化及ret的定义。                while(wrlen < rdlen){//循环条件很重要。                        ret = write(fdw, buf+wrlen, rdlen - wrlen);//留意这里的buf地址和写入长度的变化。                        if (ret == -1){                                if (errno == EINTR){                                        continue;                                }                                perror("write()");                                close(fdr);                                close(fdw);                                return 1;                        }                        wrlen += ret;                }        }        close(fdw);        close(fdr);        return 0;}                                                                                                                                          
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载