目录
Linux系统cp指令的介绍
cp指令是用于复制文件或目录的指令,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。
cp 命令主要用于拷贝文件,用法,cp demo1.c /tmp/new.txt
实现一个自己的cp指令
用linux文件编程实现一个cp指令
代码演示
#include <unistd.h>
#include<stdlib.h>
#include<string.h>
int main(int argc,char **argv)
{
int fd;
int n_read;
int n_lseek;
char *buf = NULL;
if(argc != 3){
puts("not argc");
exit(-1);
}
//1.open
fd = open(argv[1],O_RDWR); //可读可写,打开被拷贝的文件,
if(fd == -1){ //判断是否成功打开文件
puts("Not find argv[1]");
exit(-1);
}
n_lseek = lseek(fd,0,SEEK_END); //计算被拷贝文件的大小
lseek(fd,0,SEEK_SET); //将读写指针(光标)指向文件头
buf = (char *)malloc( sizeof(char)*n_lseek ); //根据文件计算的大小,给缓冲区开辟对应字节空间
//2.read
n_read = read(fd,buf,n_lseek); //将被拷贝文件的内容读取到,缓冲区buf。
//3.close argv[1]
close(fd); //关闭被拷贝文件
//3.open
fd = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600); //可读可写方式,打开拷贝文件,如果没有就创建该文件,吧打开的拷贝文件内容进行清空O_TRUNC。
if(fd == -1){ //判断是否打开/创建成功
puts("Not find argv[2]");
exit(-1);
}
//4.write
write(fd,buf,strlen(buf)); //将缓冲区的buf数据内容写到拷贝文件
close(fd); //关闭拷贝文件
printf("strlen(buf) = %d\n ",(int )strlen(buf)); //被拷贝文件内容数据读取到了缓冲区buf,打印buf缓冲区的字符数据,
return 0;
}