Linux系统下sys/stat.h中的stat/fstat/l_stat——C语言
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语言相关推荐
- windows查看linux文件中文,Linux 系统下无法查看Windows 中创建的中文文件名
标 题: Linux 系统下无法查看Windows 中创建的中文文件名 我是Linux初学者,在网上搜索了很久,经过多次尝试仍然无法解决问题,只好在这里发贴请教了,还望各位高手指点一下. 问题描述: ...
- linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装
linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装 http://hmmer.org/从该链接下载源,其中有Userguide.pdf 下载,解压缩并切换目录 之 ...
- lldb 调试php,linux系统下如何在vscode中调试C++代码
本篇博客以一个简单的hello world程序,介绍在vscode中调试C++代码的配置过程. 1. 安装编译器 vscode是一个轻量的代码编辑器,并不具备代码编译功能,代码编译需要交给编译器完成. ...
- linux中查找某一个字符串,Linux系统下,在文件中查找某个字符串
android获取手机信息大全 IMEI号,IESI号,手机型号: private void getInfo() { TelephonyManager mTm = (TelephonyManager) ...
- 在Linux系统下安装vmwareworkstation(解决中途中所有问题合集)
为了兼容,建议安装vmware workstation 15 (en) 百度网盘: 链接: https://pan.baidu.com/s/14_q0aS5b52EpXBqhTcZO0w 密码: 66 ...
- linux如何禁用ntp服务,Linux系统下NTP服务的配置注意要点
在Linux系统下NTP的标准配置中,许多关于同步的方式不同,注意以下要点: 如果不想让其它任何服务器访问本机的NTP服务:此配置也将造成本地的NTP无法访问外部的NTP服务: If you want ...
- linux音频自动转码,使用SoundConverter在Linux系统下批量音频转码的方法
以下教你在 Linux 操作系统下批量音频转码,只需要下载并安装 SoundConverter 即可,它的使用方法非常的简单,下面会做一说明. 背景 时下最流行的音频压缩格式当然是 MP3 了,目前主 ...
- Linux中assert头文件,linux系统下如何使用assert函数
linux系统下如何使用assert函数 只要看得懂程序的人都知道assert,在Windows下使用VC编写,使用assert之后,只需在IDE中设置为debug版或者是release版,编译器就会 ...
- linux系统python截图不显示中文_Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题...
本文主要向大家介绍了Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题,通过具体的内容向大家展现,希望对大家学习Linux运维知 ...
最新文章
- WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar)
- Android使用suspendCancellableCoroutine将回调转换为协程
- CentOS 初体验八:传输本地文件到CentOS
- HDU2167 Pebbles(状压DP)
- 封装js千分位加逗号和删除逗号
- LeetCode 42. 接雨水(双指针、单调栈)
- linux服务器插上硬盘不能开机,Linux服务器添加新硬盘无法识别解决方法(无需重启)...
- 【Mybatis框架】输入映射-pojo包装类型
- php beanstalkd使用,如何用PHP设置Beanstalkd
- MySQL数据库如何建立视图
- 华为基本法 读书笔记
- 图(深度优先遍历、广度优先遍历)
- 揭开期货反向跟单对冲的神秘面纱
- 获取本机号码及sim卡信息
- 微信技巧:教你几招导出微信小视频
- 强势崛起!这所年轻大学南科大,是中国高教的奇迹!
- 【退役贴】再见了ACM,再会了算法竞赛
- 【云和恩墨业务介绍】之数据库性能优化服务
- 【USACO1.3.3】最棒的回文
- 极速办公(excel)如何快速计算排名