-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.
第一:
实验-stat 函数组
1)如下图所示,使用命令“man stat”查看 stat 函数组的文档
2)打开之后如下图所示,stat(1)是属于 linux 命令的知识,如果想学习可以看一下,不是需要的 stat 函数用法。
3)下翻到“SEE ALSO”,如下图所示,可以看到有 stat(2)也,(2)表示内核提供的服务调用或者函数,是需要的。
5)退出后,然后使用命令“man 2 stat”,如下图所示。
6)如下图所示,可以看到函数的头文件以及函数组。
如下图所示,可以看到保存文件的结构体 struct stat,如下图所示,可以看到非常详细的结构成员注释。
下翻一下,可以看到很多的宏定义解释,这些具体用到的时候可以来查阅,如下图所示,
是结构成员 st_mode 的参数。
在学习函数的调用前,最后看一下“SEE ALSO”,如下图所示。
7)其实下面对于系统函数或者 API 的介绍,在 man 文档中都有介绍,大家可以自己尝试着
看一下部分英文的内容。
a)函数 int stat(const char *path, struct stat *buf);
参数*path:文件路径。
参数*buf:文件信息。
返回值:成功为 0,否则为-1。
b)函数 int fstat(int fd, struct stat *buf);
参数 fd:文件描述符。
参数*buf:文件信息
返回值:成功为 0,否则为-1。
c)函数 int lstat(const char *path, struct stat *buf);
参数*path:文件路径。
参数*buf:返回文件的信息,针对符号链接,lstat 返回链接本身,而不是而非目标文件;
stat 返回的是目标文件。链接可以类比 window 下的快捷方式。
返回值:成功为 0,否则为-1。
第二:
stat 函数组例程
新建文件 stat.c,用于学习 stat 函数组
#include <stdio.h>
//通过man文档可以查看到stat函数组头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
//open函数的参数头文件
#include <fcntl.h>
//通过 main 函数可以传参数,也就是文件的路径
int main(int argc,char *argv[])
{
struct stat groupstat;
int fd,ret;
//检测是否有传入参数
if(argc <2){
printf("\nPlease input file path\n");
return 1;
}
//stat函数测试
//使用 stat 读取文件的信息,如果路径不对则打印提示信息
ret = stat(argv[1],&groupstat);
if(ret){
printf("Please make sure file path\n");
return 1;
}
//打印文件的 inode 信息
printf("stat function test , %s of st_ino inode is %ld\n",argv[1],groupstat.st_ino);
//fstat函数测试
//使用 open 函数获取文件句柄
fd = open(argv[1],O_RDWR|O_NOCTTY|O_NDELAY);
//使用 fstat 读取文件的信息,如果路径不对则打印提示信息
if(fd<0)
{
printf("Please make sure file path\n");
return 1;
}
ret = fstat(fd,&groupstat);
if(ret){
printf("Please make sure file path\n");
return 1;
}
//打印文件的 inode 信息
printf("fstat function test , %s of st_ino inode is %ld\n",argv[1],groupstat.st_ino);
//lstat函数测试
//使用 lstat 读取文件的信息,如果路径不对则打印提示信息
ret = lstat(argv[1],&groupstat);
if(ret){
printf("Please make sure file path\n");
return 1;
}
//打印文件的 inode 信息
printf("lstat function test , %s of st_ino inode is
%ld\n",argv[1],groupstat.st_ino);
return 0;
}
第三:
编译运行测试
1)如下图所示,进入“/home/linuxsystemcode”目录,使用命令“mkdir CatlogFile”,进入新建的 CatlogFile 目录,如下图所示。
2)然后将源码 stat.c 拷贝到该目录下,使用命令
“arm-none-linux-gnueabi-gcc -o stat stat.c -static”编译,生成文件“stat”,如下图所示。
3)把文件拷贝到挂载点
4)开发板挂载后编译
将编译成的可执行文件 stat 以及 stat .c(用来测试)文件