-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.
第一:
拷贝和移动文件
可以通过 cp 命令和 mv 命令实现。mv 可以理解为“重命名”;cp 拷贝要注意和创建硬链接区分开来,硬链接的 inode 是相同,它们是同一个文件,但是 cp 拷贝之后,inode 索引节点是不同的,它们是不同的文件。
拷贝简介
Linux 下并没有专门的拷贝函数和接口,需要通过 open,read,wite 等文件操作函数实现。
拷贝流程图
第二:
拷贝例程
编写简单的 cpfile.c 文件完成拷贝功能
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
//argv[1] is oldpath ; argv[2] is newpath
#define LENTH 1024
int main(int argc,char *argv[])
{
int fds,fdt;
char buffer[LENTH];
char *fileold,*filenew;
fileold = argv[1];
filenew = argv[2];
//将 main 参数传递给 main 内部变量,然后检测参数是否输入
if(argc <3){
printf("\nPlease input file path\n");
return 1;
}
//打开oldpath
//打开新旧文件路径。如果文件 fdt 不存在则新建
fds = open(fileold,O_RDWR);
if(fds<0)
{
printf("Please make sure file path\n");
return 1;
}
//打开newpath,如果没有则创建目标文件
fdt = open(filenew,O_WRONLY|O_CREAT);
if(fdt<0)
{
printf("Please make sure file path\n");
return 1;
}
//读和写操作
//从 fds 文件中读取内容,然后写入 fdt 文件中
while(read(fds,buffer,LENTH)){
write(fdt,buffer,strlen(buffer));
}
//关闭文件
close(fds);
close(fdt);
//打印结束信息
printf("cp to finished!\n");
printf("cp %s to %s success!\n",fileold,filenew);
return 0;
}
第三:
编译运行测试
1)在 Ubuntu 系统下,如下图所示,进入前面实验创建的目录
“/home/linuxsystemcode/CatlogFile”,将源码 cpfile.c 拷贝进去,进入文件夹 CatlogFile,如下图所示。
2)使用命令“arm-none-linux-gnueabi-gcc -o cpfile cpfile.c -static”编译 cpfile 文件,如下图所示,使用命令“ls”可以看到生成了 cpfile 可执行文件。
3)将文件拷贝到挂载点
4)开发板挂载后运行文件
5)接着查看一下 cptest 文件,和原来的 linktest.c 不是同一个文件
6)打开复制生成的 cptest 文件,内容没变,如下图所示。