Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

自己动手实现cp命令续

0
0

各位看官们,大家好,上一回中咱们说的是DIY cp命令的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们,我们在上一章回中介绍了DIY cp命令的步骤以及相关的注意事项,这一回中我们将通过具体的代码来演示如何DIY cp命令。也就是通常说的理论结合实践。在DIY过程中,我们使用“基于文件描述”的方式来操作文件。

1.打开源文件,以便从源文件中读取内容;

fd_src = open(src,O_RDONLY); if(fd_src == -1) { printf("can't open file :%s \n",src); res = 1; }

2.打开目的文件,以便向目的文件中写入内容;

fd_des = open(des,O_WRONLY|O_CREAT,S_IRWXU|S_IRGRP|S_IROTH); //creat a file wiht 744 permision if(fd_des == -1) { printf("can't open file :%s \n",des); res = 1; }

3.从源文件中读取内容,每次读取BUFSIZ个字节;

4.把步骤3中读取的内容写入到目的文件中,每次写入BUFSIZ个字节;

5.反复进行步骤3和步骤4,直到源文件中没有内容为止;

while(0 != (count=read(fd_src,buf,BUFSIZ)) ) { if(-1 == count) { printf("reading file failed \n"); res = 1; break; } if(count != write(fd_des,buf,count) ) { printf("writing files failed \n"); res = 1; break; } }

6.分别关闭源文件和目的文件;

if(-1 == close(fd_src) ) { printf("close file: %s failed \n",src); res = 1; } if(-1 == close(fd_des) ) { printf("close file: %s failed \n",des); res = 1; }

把源文件进行保存,然后编译成目标文件,下面是目标文件运行的结果:

|->cp a b //这里没有报错,说明我们DIY的cp命令运行成功 在终端中执行以下命令: cmp a b //没有任何提示,说明文件a和b的内容完全相同。

看官们,以上是核心代码,完整的代码放到了我的资源中,大家可以点击这里下载使用。

各位看官,关于DIY cp命令的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。


Viewing all articles
Browse latest Browse all 12749