Linux系统编程2–实现cp指令
1、实现cp指令
cp src.c des.c //scr 源; des 目标;
1.1、思路
-
a、打开
src.c
; -
b、读
src
到buf
; -
c、打开/创建
des.c
-
d、将
buf
写入到des.c
-
e、
close
两个文件
1.2、要点
- main函数里面要加参数
int main(int argc, char **agrv) //一般为3个参数,不是的话则发生了错误
argv[1]
是指src
argv[2]
是指des
int size = lseek(fdSrc, 0, SEEK_END); //计算 src 大小
lseek(fdSrc,0,SEEK_SET); //光标返回至文件头
fdDes = open(argv[2], O_RDWR|O_CREAT|O_TRUNC,0600);
//c、打开创建 des
//O_CREAT:没有就creat; O_TRUNC:把原来的都干掉
1.3 程序
#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; //源fd
int fdDes; //目标fd
char *readBuf = NULL;
if(argc != 3)//参数不为3,终止程序;
{
printf("pararm error\n");
exit(-1);
}
fdSrc = open(argv[1],O_RDWR); //a、打开src.c
int size = lseek(fdSrc, 0, SEEK_END);
//计算源fd 大小
lseek(fdSrc,0,SEEK_SET);
//光标返回至文件头
readBuf = (char *)malloc(sizeof(char)*size +8);
//创建readBuf大小
int n_read = read(fdSrc,readBuf,size); //b、读scr 到 buf
fdDes = open(argv[2], O_RDWR|O_CREAT|O_TRUNC,0600); //c、打开创建 des
//没有就creat,把原来的都干掉
int n_write = write(fdDes,readBuf,strlen(readBuf)); //d、将 buf 写入到 des
close(fdSrc); //e、关闭两个文件
close(fdDes);
return 0;
}
2、命令的使用
- 已经写好代码之后,要进行一些命令的执行
gcc demo7.c -o mycp //该命令生成mycp文件,可以代替cp指令使用
ls
命令查看文件,可见多了mycp
./mycp demo7.c new.c //功能是:将 demo7.c 里的内容复制到 new.c
ls
命令查看文件,可见new.c
至此,cp指令就实现了,如有不足,还请各位大佬多多指教;
欢迎大家一起交流讨论!