CP命令
该文章将会展示实现Linux cp 命令的代码
前言
你是否有过疑问 Linux 里面的命令究竟是如何实现该命令的功能的,在这里我将从代码方面介绍。
一、实现 CP 命令的构想
将一个文件的内容拷贝到一个已有的文件中,或者拷贝到一个新建的文件中,第一步:打开待被拷贝的文件;第二步:将该文件拷贝到缓存区;第三步:打开并新建一个文件;第四步:缓存区里的内容写到新建的文件中;第五步:关闭文件
二、步骤
1.引入库
代码如下:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
2.实现 CP 命令的代码
代码如下:
int main(int argc,char **argv)
{
int fdSrc;
int fdDes;
char *readBuf = NULL;
//判断使用该命令的方式是否正确
if(argc != 3){
printf("param error\n");
exit(-1);
}
//第一步:打开待复制的文件
fdSrc = open(argv[1],O_RDWR);
int size = lseek(fdSrc,0,SEEK_END);
lseek(fdSrc,0,SEEK_SET); //将光标移动待文件开头
//第二步:将待复制的文件读取到缓存区 readBuf
readBuf = (char *)malloc(sizeof(char)*size+8);
int n_read = read(fdSrc,readBuf,size);
//第三步:打开或者新创建一个文件
fdDes = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);
//第四步:将缓存区里的内容写入到新打开或者创建的文件中
int n_write = write(fdDes,readBuf,size);
//第五步:关闭文件,以达到保护文件的作用
close(fdSrc);
close(fdDes);
return 0;
}
总结
知道命令的实现方式以后,你是否对如 open(), read(), write() 等函数函数感到好奇,这些函数是如何实现这些功能的呢?