相关函数:fstat, lstat, chmod, chown, readlink, utime

头文件:#include<sys/stat.h>  #include<uninstd.h>

定义函数:int stat(const char * file_name, struct stat *buf);

函数说明:stat()用来将参数file_name 所指的文件状态, 复制到参数buf 所指的结构中。

下面是struct stat 内各参数的说明:

struct stat {dev_t st_dev; //device 文件的设备编号ino_t st_ino; //inode 文件的i-nodemode_t st_mode; //protection 文件的类型和存取的权限nlink_t st_nlink; //number of hard links 连到该文件的硬连接数目, 刚建立的文件值为1.uid_t st_uid; //user ID of owner 文件所有者的用户识别码 gid_t st_gid; //group ID of owner 文件所有者的组识别码 dev_t st_rdev; //device type 若此文件为装置设备文件, 则为其设备编号 off_t st_size; //total size, in bytes 文件大小, 以字节计算 unsigned long st_blksize; //blocksize for filesystem I/O 文件系统的I/O 缓冲区大小. u nsigned long st_blocks; //number of blocks allocated 占用文件区块的个数, 每一区块大小为512 个字节. time_t st_atime; //time of lastaccess 文件最近一次被存取或被执行的时间, 一般只有在用mknod、 utime、read、write 与tructate 时改变.time_t st_mtime; //time of last modification 文件最后一次被修改的时间, 一般只有在用mknod、 utime 和write 时才会改变time_t st_ctime; //time of last change i-node 最近一次被更改的时间, 此参数会在文件所有者、组、 权限被更改时更新
};

先前所描述的st_mode 则定义了下列数种情况:

1、S_IFMT 0170000 文件类型的位遮罩
2、S_IFSOCK 0140000 scoket
3、S_IFLNK 0120000 符号连接
4、S_IFREG 0100000 一般文件
5、S_IFBLK 0060000 区块装置
6、S_IFDIR 0040000 目录
7、S_IFCHR 0020000 字符装置
8、S_IFIFO 0010000 先进先出 9、S_ISUID 04000 文件的 (set user-id on execution)位
10、S_ISGID 02000 文件的 (set group-id on execution)位
11、S_ISVTX 01000 文件的sticky 位 12、S_IRUSR (S_IREAD) 00400 文件所有者具可读取权限
13、S_IWUSR (S_IWRITE)00200 文件所有者具可写入权限
14、S_IXUSR (S_IEXEC) 00100 文件所有者具可执行权限 15、S_IRGRP 00040 用户组具可读取权限
16、S_IWGRP 00020 用户组具可写入权限
17、S_IXGRP 00010 用户组具可执行权限 18、S_IROTH 00004 其他用户具可读取权限
19、S_IWOTH 00002 其他用户具可写入权限
20、S_IXOTH 00001 其他用户具可执行权限上述的文件类型在 POSIX 中定义了检查这些类型的宏定义 21、S_ISLNK (st_mode) 判断是否为符号连接
22、S_ISREG (st_mode) 是否为一般文件
23、S_ISDIR (st_mode) 是否为目录
24、S_ISCHR (st_mode) 是否为字符装置文件
25、S_ISBLK (s3e) 是否为先进先出
26、S_ISSOCK (st_mode) 是否为socket 若一目录具有sticky 位 (S_ISVTX), 则表示在此目录下的文件只能 被该文件所有者、此目录所有者或root 来删除或改名. 

返回值:执行成功则返回0,失败返回-1,错误代码存于errno。

错误代码:

 1、ENOENT 参数file_name 指定的文件不存在 2、ENOTDIR 路径中的目录存在但却非真正的目录3、ELOOP 欲打开的文件有过多符号连接问题, 上限为16 符号连接4、EFAULT 参数buf 为无效指针, 指向无法存在的内存空间5、EACCESS 存取文件时被拒绝6、ENOMEM 核心内存不足7、ENAMETOOLONG 参数file_name 的路径名称太长

实例:

#include <sys/stat.h>
#include <unistd.h>main()
{struct stat buf;stat("/etc/passwd", &buf);printf("/etc/passwd file size = %d \n", buf.st_size);
}

stat()函数:获取文件状态相关推荐

  1. C语言fstat函数获取文件的大小

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105112131 f ...

  2. c语言读取文件字节数,怎么在C语言中利用fstat函数获取文件的大小

    怎么在C语言中利用fstat函数获取文件的大小 发布时间:2021-01-22 17:03:17 来源:亿速云 阅读:110 作者:Leah 怎么在C语言中利用fstat函数获取文件的大小?针对这个问 ...

  3. R语言list.files函数获取文件列表实战

    R语言list.files函数获取文件列表实战 目录 R语言list.files函数获取文件列表实战 #仿真数据 #基本语法

  4. cp无法获取文件状态stat_Node.js从零开始——文件系统

    我努力找了找图,不过清晰度堪忧啊,所以自己做了一张,有点丑不过也就这样了,哈哈. 今天的内容主要就是 Node.js 的文件系统,毕竟服务器么,也有文件服务器不是? 1 文件系统模块 这里把文件系统模 ...

  5. Windows 下 C++ 利用 OpenCV glob 函数获取文件夹下所有文件绝对路径

    绪论 本文记录 Windows 下 C++ 利用 OpenCv glob 函数得到 文件夹下所有文件的绝对路径(含文件名).本文还含有 std::string::find()等函数的记录.如果是 Py ...

  6. Go 学习笔记(44)— Go 标准库之 os(获取文件状态、获取/修改文件权限、创建、删除目录和文件、获取进程ID、设置获取环境变量)

    1. 概述 os 包提供了操作系统函数的不依赖平台的接口.失败的调用会返回错误值而非错误码.通常错误值里包含更多信息.例如,如果某个使用一个文件名的调用(如Open.Stat)失败了,打印错误时会包含 ...

  7. 用SHGetFileInfo函数获取文件信息

    Windows系统的shallapi函数 SHGetFileInfo函数 WINSHELLAPI DWORD WINAPI SHGetFileInfo(     LPCTSTR pszPath,   ...

  8. 使用 fcntl 函数 获取,设置文件的状态标志

    前言 当打开一个文件的时候,我们需要指定打开文件的模式( 只读,只写等 ).那么在程序中如何获取,修改这个文件的状态标志呢?本文将告诉你如何用 fcntl函数 获取指定文件的状态标志. 解决思路 1. ...

  9. (整理类)文件描述符,文件描述符标志,文件状态标志

    感谢和参考于(你们是我成长路上的最大助力!): Linux中文件描述符fd和文件指针flip的理解 文件描述符标志.文件状态标志 Linux编程–文件描述符fd PART 1 文件描述符:fd(fil ...

最新文章

  1. 【Linux学习】Ubuntu下内核编译(一)
  2. 解决JavaScript中使用$.ajax方式提交数组参数
  3. 联科集团携手阿里云发布科研混合云平台 共建科研教育新生态
  4. YII2 模型关联之 一对多
  5. 促使网站关键词排名稳定的技巧有哪些?
  6. LDR指令和LDR伪指令区别
  7. Ubuntu -- 安装、卸载程序的命令
  8. 最接近的三数之和Python解法
  9. Technocup 2020 - Elimination Round 2 E. Rock Is Push dp
  10. 史上最实用mysql参数之一-----sql_safe_updates
  11. Spark SQL概念学习系列之Spark SQL入门(八)
  12. Word VBA:批量删除多个分段页面
  13. 分享一个开源的流程图绘制软件--Diagram Designer
  14. 用HOOK机制让自绘菜单栏控件模拟系统菜单栏行为
  15. 牛牛的旅游纪念品 动态规划背包问题
  16. 能“读懂”古文还可反诈骗, 合合信息智能文字识别“黑科技”亮相2022WAIC
  17. 霍兰德人格分析雷达图的两个坑
  18. 一款功能超级强大的AI驱动自动一键抠图软件,可一键扣人物商品衣服动物婚纱图章签名logo
  19. Pandas Series入门丨Pandas数据分析基础(3)
  20. 嵌入式软件开发工程师面试指南_总结

热门文章

  1. 高级转录组分析和R语言数据可视化课程全部转为视频课
  2. 单细胞分析Seurat使用相关的10个问题答疑精选!
  3. 数字孪生体技术白皮书_数字孪生体的标准化之路
  4. python装饰器应用论文_python 装饰器应用
  5. 图片流写出 并带数据_IO流阶段---字符流
  6. qq浏览器打开word 技术原理_知道为什么计算机可以上网的同时,可以写word还可以听歌吗?...
  7. CentOS7 安装 Nginx PHP
  8. css隐藏输入框的光标
  9. SQL笔记-检索出ID为Int或Long中不连续的第一个点
  10. Qt文档阅读笔记-Q_ENUM官方解析及实例