RUBBISHLINUX WASTE MY SEVERAL DAYS

来源:互联网 发布:淘宝代收服务没有 编辑:程序博客网 时间:2024/04/27 09:10
 
asmlinkage int sys_mycopy(char *src,char *dest)
{
 int source, destination,n,number=0;//source 为源文件的代号,destination为目标文件的代号
                                      //n 为一次读文件的字节数,number为文件的总字节数
 mm_segment_t fs;
 char buf[512] ;     //缓冲区
if((source=sys_open(src,O_RDONLY,0))==-1)    //打开源文件,得到文件代号,只读方式
 {
   printk("FILE cannot be opened :src");
   sys_exit(-2);
 }
  if((destination=sys_open(dest,O_CREAT|O_WRONLY|O_TRUNC,0666))==-1)
                                         //打开目标文件,得到文件代号
  {
    sys_exit(-3);
  }
  fs=get_fs();
  set_fs(get_ds());
  while((n=sys_read(source,buf,512))>0)     //一次读512个字节
  {
    number+=n;
    if(sys_write(destination,buf,n)!=n)      //写的个数与读的个数不等时,报错
    {
      printk("Copy File %s to %s Error/n",src,dest);
      sys_exit(-1);
    }
   }
   set_fs(fs);
   sys_close(source);
   sys_close(destination);     //关闭文件
return number;    //返回文件长度
}
原创粉丝点击