函数原型:int stat(const char *pathname, struct stat *statbuf)

函数作用:用于获取文件状态信息

使用函数需要包含头文件:

#include <sys/types.h>
       #include <sys/stat.h>
       #include <unistd.h>

stat函数在 statbuf 指向的缓冲区中返回有关文件的信息。

返回值:成功返回0;失败返回-1

stat结构:
函数调用返回一个 stat 结构,其中包含以下字段:

struct stat {dev_t     st_dev;         /* ID of device containing file */文件使用的设备号ino_t     st_ino;         /* Inode number */ 索引节点号mode_t    st_mode;        /* File type and mode */文件类型和模式nlink_t   st_nlink;       /* Number of hard links */文件的硬连接数uid_t     st_uid;         /* User ID of owner */所有者的用户IDgid_t     st_gid;         /* Group ID of owner */所有者的组IDdev_t     st_rdev;        /* Device ID (if special file) */设备IDoff_t     st_size;        /* Total size, in bytes */以字节为单位的文件容量blksize_t st_blksize;     /* Block size for filesystem I/O */文件系统 I/O块大小blkcnt_t  st_blocks;      /* Number of 512B blocks allocated */文件所占的磁盘块/* 自 Linux 2.6 起,内核支持纳秒以下时间戳字段的精度。Linux 2.6 之前的详细信息,请参见注释。 */struct timespec st_atim;  /* Time of last access*/最后一次访问该文件的时间struct timespec st_mtim;  /* Time of last modification*/最后一次修改该文件的时间struct timespec st_ctim;  /* Time of last status change*/最后一次修改文件状态的时 间#define st_atime st_atim.tv_sec      /* 向后兼容 */#define st_mtime st_mtim.tv_sec#define st_ctime st_ctim.tv_sec};

stat结构体中的st_mode 为文件类型定义了以下掩码值:

           S_IFMT     0170000   bit mask for the file type bit fieldS_IFSOCK   0140000   socketS_IFLNK    0120000   symbolic linkS_IFREG    0100000   regular fileS_IFBLK    0060000   block deviceS_IFDIR    0040000   directoryS_IFCHR    0020000   character deviceS_IFIFO    0010000   FIFO

POSIX 还定义了额外的宏,以允许在 st_mode 中编写文件类型的测试更简洁。

           S_ISREG(m)  is it a regular file?S_ISDIR(m)  directory?S_ISCHR(m)  character device?S_ISBLK(m)  block device?S_ISFIFO(m) FIFO (named pipe)?S_ISLNK(m)  symbolic link?  (Not in POSIX.1-1996.)S_ISSOCK(m) socket?  (Not in POSIX.1-1996.)

测试例子:

stat(pathname, &sb);
if (S_ISREG(sb.st_mode)){/* Handle regular file */}

C++:stat函数相关推荐

  1. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  2. Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译

    Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...

  3. C++ 笔记(34)— C++ exit 函数

    当遇到 main 函数中的 return 语句时,C++ 程序将停止执行.但其他函数结束时,程序并不会停止.程序的控制将返回到函数调用之后的位置.然而,有时候会出现一些非常少见的情况,使得程序有必要在 ...

  4. C++ 笔记(30)— 友元函数与友元类

    我们知道类的私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行.这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书写的麻烦. ...

  5. 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )

    1. foreach 函数 foreach 函数定义如下: $(foreach <var>,<list>,<text>) 函数的功能是:把参数 <list&g ...

  6. 浅显易懂 Makefile 入门 (06)— 文件名操作函数(dir、notdir、suffix、basename、addsuffix、addperfix、join、wildcard)

    编写 Makefile 的时候,很多情况下需要对文件名进行操作.例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等. 注意:下面的每个函数的参数字符串都会被当作或是一个系列的文件名来看待. 1 ...

  7. Go 学习笔记(65)— Go 中函数参数是传值还是传引用

    Go 语言中,函数参数传递采用是值传递的方式.所谓"值传递",就是将实际参数在内存中的表示逐位拷贝到形式参数中.对于像整型.数组.结构体这类类型,它们的内存表示就是它们自身的数据内 ...

  8. Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法

    函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...

  9. C++ 笔记(26)— 主函数 main(int argc, char *argv[]) 参数说明

    带形参的 main 函数,如 int main( int argc, char* argv[], char **env ) 是 UNIX .Linux 以及 Mac OS 操作系统中 C/C++ 的 ...

  10. OpenCV 笔记(09)— 常用的数据结构和函数(Vec、Point、Scalar、Size、Rect、cvtColor)

    1. Vec 对象类型 Vec 是一个主要用于数值向量的模板类.我们可以定义向量的类型和组件的数量: Vec<double, 19> myVector 我们还可以使用任何的预定义类型: t ...

最新文章

  1. 爬虫之requests模块中cookies参数的使用
  2. 院士谈如何做好研究生:要逼着自己去想问题,最大的浪费是聪明人不思考
  3. mysql goto,如何在MySQL存储函数中使用goto标签
  4. php移动代码,复制移动文件 - PHP
  5. 使用append之后数组维度消失_JAVA魅力之神奇的数组带给你不一样的乐趣
  6. SpringBoot基础篇Bean之条件注入之注解使用
  7. PointNet:3D点集分类与分割深度学习模型
  8. tensorflow和python版本不一样_相比Tensorflow2和PyTorch,TensorFlow1.x版本有什么弊端?...
  9. jpa基于按annotation的hibernate主键生成策略
  10. lisp语言cond和if套用_AutoCAD LISP 循环选择语句cond
  11. eclipse 设置默认编码为Utf-8
  12. VS2010中的sln,suo分别是什么含义
  13. idea2020 个性化设置
  14. java 检测ip网速_使用Speedtest CLI测试你的网速
  15. 联合循环——30 正式倒送电
  16. 计算机核心期刊论文模板,中文核心期刊(论文)模板.doc
  17. 对_stdcall 的理解 (转)
  18. 失控的热潮:为什么说特斯拉的“电池日”名副其实?
  19. RAW图片转换JPEG图片工具(免费)
  20. Java学习笔记(24)——正则表达式

热门文章

  1. 高热度领域 连麦互动直播全方位实现
  2. 中国独角兽报告:2019
  3. 最优二叉树(哈夫曼树)
  4. 兼容性测试(Compatibility Testing)
  5. Java //PP1.6 编写一个程序,显示一首歌的一段歌词,并标注合声部分(歌曲自选)。
  6. ubuntu下更新python
  7. “苹果云”,云计算的未来
  8. [转] 研究过177位百万富翁后, 他得出13条“富有的习惯”, 你占几条?
  9. T2VLAD: Global-Local Sequence Alignment for Text-Video Retrieval
  10. group by 取最新或者最后的一条数据