Chinaunix首页 | 论坛 | 博客
  • 博客访问: 289921
  • 博文数量: 95
  • 博客积分: 618
  • 博客等级: 中士
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-28 13:39
文章分类

全部博文(95)

文章存档

2015年(65)

2013年(1)

2012年(10)

2011年(19)

分类: C/C++

2011-12-06 19:14:13

  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <unistd.h>
  4. #include <sys/stat.h>
  5. #include <string.h>

  6. bool cp(int fdsrc,int fddest)
  7. {
  8.     char buff[1024];
  9.     int relen=0,wrlen=0;
  10.     while ((relen=read(fdsrc,buff,sizeof(buff))) > 0)
  11.     {
  12.         if (write(fddest,buff,relen)==-1)
  13.         {
  14.             perror("error:");
  15.             return false;
  16.         }
  17.         memset(buff,0,sizeof(buff));
  18.     }
  19.     if (relen==-1)
  20.     {
  21.         perror("error:");
  22.         return false;
  23.     }

  24.     /*
  25.     *程序退出后交给内核关闭文件,
  26.     *对于只打开那么两个文件运行完就退出的程序
  27.     *显式关闭是没有必要的,无论怎样,内核都要做这一步~~~
  28.     *
  29.     */        
  30. //    close(fdsrc);
  31. //    close(fddest);
  32.     return true;
  33. }

  34. int main(int argc,char **argv)
  35. {
  36.     if (argc<3)
  37.     {
  38.         printf("argument too less");
  39.     }

  40.     int fdsrc,fddest;
  41.     if ((fdsrc=open(argv[1],O_RDONLY))==-1)
  42.     {
  43.         perror(argv[1]);
  44.         return 0;
  45.     }
  46.     if ((fddest=open(argv[2],O_WRONLY|O_TRUNC|O_CREAT,0644))==-1)
  47.     {
  48.         perror(argv[2]);
  49.         return 0;
  50.     }
  51.     if(cp(fdsrc,fddest))
  52.     {
  53.         printf("complete !\n");
  54.         return 0;
  55.     }
  56.     return 0;
  57. }
这是最简单的版本,老代码了,改天再弄个好点的出来玩玩,待续^^


阅读(1377) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~