自己编写代码实现liunx平台的cp指令
使用了liunx平台的相关指令之后,又学习open,read,write这些函数的使用,就来自己实现下cp指令,下面直接上代码。
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h> //相关头文件
#include <string.h>
#include <stdlib.h>
int main(int argc,char **argv)//设置程序运行时需输入的参数,进而实现cp指令
{
int fdSrc;
//定义两个文件描述符
int fdDes;
char *redBuf=NULL;//定义一个字符指针,用来存储需要复制文件中的数据
if(argc!=3){
printf("par arm error");
exit(-1); //判断输入的参数是否正确,如果输入不正确,会终止程序,并给出相关提示
}
fdSrc=open(argv[1],O_RDWR);//获取需复制文件的描述符
int size=lseek(fdSrc,0,SEEK_END);
//移动光标,防止复制的数据重复
lseek(fdSrc,0,SEEK_SET);
redBuf=malloc(sizeof(char)*size+8);//给定义的指针变量申请空间,防止出现段错误
int n_read=read(fdSrc,redBuf,size);//将要复制文件的数据存入redBuf中
fdDes=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);
//将数据写入需要复制后的文件
int n_write=write(fdDes,redBuf,strlen(redBuf));
close(fdSrc);
//关闭两个文件,防止出现问题
close(fdDes);
return 0;
}
来看看代码运行的效果:
首先通过编译获得可执行文件mycp,然后执行mycp,成功将cpc.c的代码复制到wencai.c里面
大家也可以去试一下实现其他的指令,基本都是依靠open,read,write三个函数来实现的。