记录一下前段时间学习的嵌入式开发笔记,在嵌入式开发板上,利用stat函数复制一个文件到新文本
代码如下,保存为.c文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <dirent.h>
int main(int argc,char **argv)
{
if(argc != 3)
{
printf("请输入正确的参数个数~~~\n");
return -1;
}
//定义stat结构体
struct stat s_buf;
//获取你想要拷贝的文件的大小
stat(argv[1],&s_buf);
//将文件的大小类型转换为整型
int f_size = (int)s_buf.st_size;
//定义临时缓冲区用来存放文件的数据
char f_buf[f_size];
//打开被复制的文件
int fd1 = open(argv[1],O_RDONLY);
if(fd1 < 0)
{
printf("open fd1 failed\n");
return -1;
}
//打开生成的文件
int fd2 = open(argv[2],O_WRONLY|O_CREAT,0777);
if(fd2 < 0)
{
printf("open fd2 failed\n");
return -1;
}
//对文件进行读写复制
int r_size = read(fd1,f_buf,f_size);
if(r_size < 0)
{
printf("read fd1 failed\n");
return -1;
}
printf("f_size is %d\n",f_size);
printf("r_size is %d\n",r_size);
write(fd2,f_buf,r_size);
//关闭文件
close(fd1);
close(fd2);
return 0;
}
在装了arm-linux-gcc的虚拟机中,文件目录下编译
arm-linux-gcc filename.c -o filename
上传开发版(略),文件授权(略)
执行
./filename file1 file2