实现linux cp命令
作者:互联网
cp src.c(源文件) des.c(目标文件)
一、思路:
1.打开src.c(源文件)
2.把src.c(源文件) 的内容读到buf中
3.打开并创建des.c(目标文件)
4.把buf写到des.c(目标文件)中
5.close 关闭src.c(源文件)和des.c(目标文件)
二、代码实现
(1)先写一个测试demo
argc为参数的个数是int型
argv是数组指针(二级指针)指针的每一项都是一个数组
#include <stdio.h>
int main(int argc,char **argv)
{
printf("totol params:%d\n",argc);
printf("No1. params:%s\n",argv[0]);
printf("No2. params:%s\n",argv[1]);
printf("No3. params:%s\n",argv[2]);
return 0;
}
(2)拷贝文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
int fdSrc;//源文件
int fdDes;//目标文件
char *readbuf=NULL;
if(argc != 3)/*判断参数的个数*/
{
printf("pararm error\n");
exit(-1);
}
fdSrc=open(argv[1],O_RDWR);
int size=lseek(fdSrc,0,SEEK_END);
/*把光标从开头定位到文件的尾巴*/
/*读取之前计算文件的大小*/
lseek(fdSrc,0,SEEK_SET);
/*读文件的时候要重新定位*/
readbuf=(char *)malloc(sizeof(char)*size+8);
/*开辟空间*/
int n_read=read(fdSrc,readbuf,size);
/*读取源文件*/
fdDes=open(argv[2],O_RDWR|O_CREAT,0600);
/*打开目标文件*/
int n_write=write(fdDes,readbuf,strlen(readbuf));
/*往目标文件写源文件的内容*/
close(fdSrc);
close(fdDes);
return 0;
}
运行结果:两个文件的内容一致
标签:文件,include,fdSrc,int,argv,源文件,命令,linux,cp 来源: https://blog.csdn.net/weixin_42900834/article/details/113249145