stat/fstat/l_stat

#include <sys/stat.h>

功能:用来获取文件属性,返回值:成功返回0,失败返回-1

int stat(const char *path, struct stat *buf);

path:需要文件路径

int fstat(int fd, struct *buf);

fd:需要打开后的文件描述符

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

stat/fstat会跟踪链接目标,而lstat不跟踪链接目标。

struct stat {dev_t     st_dev;     // 设备idino_t     st_ino;     // 节点号mode_t    st_mode;    // 文件类型和权限nlink_t   st_nlink;   // 硬链接数uid_t     st_uid;     // 用户IDgid_t     st_gid;     // 组IDdev_t     st_rdev;    // 特殊设备IDoff_t     st_size;    // 文件的总字节数blksize_t st_blksize; // IO块数blkcnt_t  st_blocks;  // 占用块(512字节)time_t    st_atime;   // 最后访问时间time_t    st_mtime;   // 最后修改时间time_t    st_ctime;   // 最后的文件属性修改时间
};

以下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文件 socket?

为st_mode字段定义了以下标志:

S_IFMT 0170000 获取文件类型出错 bit mask for the file type bit fields

S_IFSOCK 0140000 socket文件

S_IFLNK 0120000 软链接 symbolic link

S_IFREG 0100000 标准文件 regular file

S_IFBLK 0060000 块设备 block device

S_IFDIR 0040000 目录 directory

S_IFCHR 0020000 字符设备 character device

S_IFIFO 0010000 管道文件 FIFO

S_ISUID 0004000 设置uid位 set UID bit

S_ISGID 0002000 设置组ID位 set-group-ID bit (see below)

S_ISVTX 0001000 粘滞位 sticky bit (see below)

S_IRWXU 00700 获取权限 mask for file owner permissions

S_IRUSR 00400 所有者具有读取权限 owner has read permission

S_IWUSR 00200 所有者具有写入权限 owner has write permission

S_IXUSR 00100 属主的执行权限 owner has execute permission

S_IRWXG 00070 所有者具有执行权限 mask for group permissions

S_IRGRP 00040 组具有读取权限 group has read permission

S_IWGRP 00020 组具有写入权限 group has write permission

S_IXGRP 00010 组具有执行权限 group has execute permission

S_IRWXO 00007 其他人权限的掩码(不在组中) mask for permissions for others (not in group)

S_IROTH 00004 其他人有读权限 others have read permission

S_IWOTH 00002 其他人有写权限 others have write permission

S_IXOTH 00001 其他人有执行权限 others have execute permission

#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>int main()
{int fd = open("1.txt", O_RDONLY);struct stat buf;fstat(fd, &buf);printf("st_dev:%u\n",(unsigned int)buf.st_dev);printf("st_ino:%lu\n",buf.st_ino);printf("st_mode:%u\n",buf.st_mode);printf("st_nlink:%u\n",buf.st_nlink);printf("st_uid:%u\n",buf.st_uid);printf("st_gid:%u\n",buf.st_gid);printf("st_rdev:%u\n",(unsigned int)buf.st_rdev);printf("st_size:%lu\n",buf.st_size);printf("st_blksize:%lu\n",buf.st_blksize);printf("st_blocks:%u\n",(unsigned int)buf.st_blocks);printf("st_atime:%lu\n",buf.st_atime); // 可以使用localtime转换输出printf("st_mtime:%lu\n",buf.st_mtime);printf("st_ctime:%lu\n",buf.st_ctime);
}

参考源自:Linux丰富的帮助手册。终端执行man 2 stat,即可找到相关资料

相关应用参考:高仿linux下的ls -l命令——C语言实现

Linux系统下sys/stat.h中的stat/fstat/l_stat——C语言相关推荐

  1. windows查看linux文件中文,Linux 系统下无法查看Windows 中创建的中文文件名

    标  题: Linux 系统下无法查看Windows 中创建的中文文件名 我是Linux初学者,在网上搜索了很久,经过多次尝试仍然无法解决问题,只好在这里发贴请教了,还望各位高手指点一下. 问题描述: ...

  2. linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装

    linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装 http://hmmer.org/从该链接下载源,其中有Userguide.pdf 下载,解压缩并切换目录 之 ...

  3. lldb 调试php,linux系统下如何在vscode中调试C++代码

    本篇博客以一个简单的hello world程序,介绍在vscode中调试C++代码的配置过程. 1. 安装编译器 vscode是一个轻量的代码编辑器,并不具备代码编译功能,代码编译需要交给编译器完成. ...

  4. linux中查找某一个字符串,Linux系统下,在文件中查找某个字符串

    android获取手机信息大全 IMEI号,IESI号,手机型号: private void getInfo() { TelephonyManager mTm = (TelephonyManager) ...

  5. 在Linux系统下安装vmwareworkstation(解决中途中所有问题合集)

    为了兼容,建议安装vmware workstation 15 (en) 百度网盘: 链接: https://pan.baidu.com/s/14_q0aS5b52EpXBqhTcZO0w 密码: 66 ...

  6. linux如何禁用ntp服务,Linux系统下NTP服务的配置注意要点

    在Linux系统下NTP的标准配置中,许多关于同步的方式不同,注意以下要点: 如果不想让其它任何服务器访问本机的NTP服务:此配置也将造成本地的NTP无法访问外部的NTP服务: If you want ...

  7. linux音频自动转码,使用SoundConverter在Linux系统下批量音频转码的方法

    以下教你在 Linux 操作系统下批量音频转码,只需要下载并安装 SoundConverter 即可,它的使用方法非常的简单,下面会做一说明. 背景 时下最流行的音频压缩格式当然是 MP3 了,目前主 ...

  8. Linux中assert头文件,linux系统下如何使用assert函数

    linux系统下如何使用assert函数 只要看得懂程序的人都知道assert,在Windows下使用VC编写,使用assert之后,只需在IDE中设置为debug版或者是release版,编译器就会 ...

  9. linux系统python截图不显示中文_Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题...

    本文主要向大家介绍了Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题,通过具体的内容向大家展现,希望对大家学习Linux运维知 ...

最新文章

  1. WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar)
  2. Android使用suspendCancellableCoroutine将回调转换为协程
  3. CentOS 初体验八:传输本地文件到CentOS
  4. HDU2167 Pebbles(状压DP)
  5. 封装js千分位加逗号和删除逗号
  6. LeetCode 42. 接雨水(双指针、单调栈)
  7. linux服务器插上硬盘不能开机,Linux服务器添加新硬盘无法识别解决方法(无需重启)...
  8. 【Mybatis框架】输入映射-pojo包装类型
  9. php beanstalkd使用,如何用PHP设置Beanstalkd
  10. MySQL数据库如何建立视图
  11. 华为基本法 读书笔记
  12. 图(深度优先遍历、广度优先遍历)
  13. 揭开期货反向跟单对冲的神秘面纱
  14. 获取本机号码及sim卡信息
  15. 微信技巧:教你几招导出微信小视频
  16. 强势崛起!这所年轻大学南科大,是中国高教的奇迹!
  17. 【退役贴】再见了ACM,再会了算法竞赛
  18. 【云和恩墨业务介绍】之数据库性能优化服务
  19. 【USACO1.3.3】最棒的回文
  20. 极速办公(excel)如何快速计算排名

热门文章

  1. 禁止乐播投屏PC2.1版升级
  2. 蓝桥杯-振兴中华三种解题方法(C语言)
  3. 10.22css基础02
  4. 2022年最受欢迎的10款网络游戏
  5. Yocto--书籍、网站、较好博文
  6. 网络教育模式下计算机教育课程改革
  7. 南邮Android实验报告三:基于高德地图的综合应用
  8. BASE函数,你知道怎么用吗?
  9. 水果礼包拼手气(仿红包拼手气)含拼手气红包算法
  10. 学会分析网站原始访问日志