第四章:文件stat获取函数

摘要:
所在的头文件struct  stat{mode_t  st_mode;/*文件的访问模式*/ino_t   st_ino;  /*i节点的信息*/dev_t  st_dev;  /*设备号*/dev_t  st_rdev;  /*特殊文件的设备号*/nlink_t  st_nlink;  /*硬链接接数*/uid_t  st_uid;  /*文件所有者的用户ID*/gid_

所在的头文件 <sys/stat.h>

struct  stat{

mode_t  st_mode; /*文件的访问模式*/

ino_t   st_ino;  /*i节点的信息*/

dev_t   st_dev;  /*设备号*/

dev_t   st_rdev;  /*特殊文件的设备号*/

nlink_t  st_nlink;  /*硬链接接数*/

uid_t   st_uid;   /*文件所有者的用户ID*/

gid_t   st_gid;  /*文件所有者的组ID*/

off_t   st_size;  /*普通文件的大小*/

time_t  st_atime; /*文件的访问时间*/

time_t  st_mtime; /*文件的修改时间*/

time_t  st_ctime; /*文件的状态改变时间*/

blksize_t st_blksize;/*最佳I/O块大小*/

blkcnt_t  st_blocks;/*文件所占用的磁盘块*/

}

注意:st_rdev st_blksize st_blocks 这三个字段不是 POSIX.1 要求的

1、stat函数

int  stat(const char* restrict pathname , struct stat * restrict buf);

跟随符号链接,该函数指定一个符号链接的时候,函数返回的是符号链接指向的文件的信息

1 #include<stdio.h>
2 #include<unistd.h>
3 #include<sys/stat.h>
4 
5 int
6 main(int argc, char**argv)
7 {
8         structstat    buf;
9 
10         stat(argv[1],&buf);
11 
12         printf("文件访问标志    :%o\n",buf.st_mode);
13         printf("设备号          :%d\n",buf.st_dev);
14         printf("特殊设备文件号  :%d\n",buf.st_rdev);
15         printf("硬链接数        :%d\n",buf.st_nlink);
16         printf("文件所有者用户ID:%d\n",buf.st_uid);
17         printf("文件所有者组ID  :%d\n",buf.st_gid);
18         printf("普通文件的大小  :%d\n",buf.st_size);
19         printf("上次访问时间    :%d\n",buf.st_atime);
20         printf("上次修改时间    :%d\n",buf.st_mtime);
21         printf("上次状态更新时间:%d\n",buf.st_ctime);
22         printf("最佳I/O块大小   :%d\n",buf.st_blksize);
23         printf("文件所占块数    :%d\n",buf.st_blocks);
24 
25         return  0;
26 }

2、fstat函数

int  fstat(int  fd, struct stat * buf);

fstat 同 stat , 但是只是从文件描述符上获取 文件的 stat 信息

3、lstat函数

int  lstat(const char * restrict pathname , struct stat * buf);

lstat函数同stat函数, 但是 lstat 函数不跟随符号链接 , 当访问符号链接的时候, 获取的是符号链接本身的stat,而不是其指向的文件的stat

免责声明:文章转载自《第四章:文件stat获取函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android项目编译和使用C语言动态库(so库)Sql Server 常用系统存储过程大全下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

例7-1

#include<stdio.h> int main(void) { int count[9]; inti,response; for(i=1;i<=8;i++) count[i]=0; for(i=1;i<=1000;i++){ printf("input your...

Keil Debug (printf) Viewer

Debug (printf) Viewer Home » µVision Windows » Debug (printf) Viewer The Debug (printf) Viewer window displays data streams that are transmitted sequentially through the ITM Stimu...

C语言复习之输入多个空格,保留一个

1 #include <stdio.h> 2 3 int main() 4 { 5 int c = 0,flag = 0; 6 printf("Clear blanks"); 7 while((c=getchar()) != EOF) 8 { 9 if(c == ' ')10...

(Go)13.判断文件或者目录是否存在

判断文件或者目录是否存在,如果目录不存在,则创建 packagemain import( "fmt" "os" ) funcmain(){ path:="d:/test.txt" b,err:=PathExists(path) iferr!=nil{ fmt.Printf("PathExists(%s),err(%v) ",path,err) } i...

STM32CubeIDE使用ITM调试

以前用Keil MDK总喜欢用一个串口,使用printf函数往串口助手上打印一些提示信息。发现使用ITM比使用串口调试好使一点,但是前提是,必须要用调试器,J-Link或者ST-Link,ST-Link还必须要有SWO这根线,也就是一般开发板上带的4线的SWD接口是不行的。下面记录一下我的配置过程。 打开IDE新建STM32工程,file-->new...

智能指针处理---bo

//sdltest1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h"#include <stdio.h>#include <stdlib.h> extern "C"{ #include <SDL.h>#include "libavutil/opt.h"#include "l...