stat()—获取文件状态 stat() 函数是 Unix 系统中一个常用的函数,用于获取文件状态。该函数的头文件是 `<sys/stat.h>` 和 `<unistd.h>`。函数的定义是 `int stat(const char *file_name, struct stat *buf)`。 函数的作用是将参数 `file_name` 所指的文件状态复制到参数 `buf` 所指的结构中。该结构体 `struct stat` 中包含了文件的详细信息,包括: * `dev_t st_dev`: 文件的设备编号 * `ino_t st_ino`: 文件的 i-node * `mode_t st_mode`: 文件的类型和存取权限 * `nlink_t st_nlink`: 连到该文件的硬链接数目 * `uid_t st_uid`: 文件所有者的用户识别码 * `gid_t st_gid`: 文件所有者的组识别码 * `dev_t st_rdev`: 若文件为装置设备文件,则为其设备编号 * `off_t st_size`: 文件大小,以字节计算 * `unsigned long st_blksize`: 文件系统的 I/O 缓冲区大小 * `unsigned long st_blocks`: 占用文件区块的个数,每一区块大小为 512 个字节 * `time_t st_atime`: 文件最近一次被存取或被执行的时间 * `time_t st_mtime`: 文件最后一次被修改的时间 * `time_t st_ctime`: i-node 最近一次被更改的时间 在 `st_mode` 中定义了文件类型的位遮罩,如: * `S_IFMT 0170000`: 文件类型的位遮罩 * `S_IFSOCK 0140000`: socket * `S_IFLNK 0120000`: 符号连接 * `S_IFREG 0100000`: 一般文件 * `S_IFBLK 0060000`: 区块装置 * `S_IFDIR 0040000`: 目录 * `S_IFCHR 0020000`: 字符装置 * `S_IFIFO 0010000`: 先进先出 在 POSIX 中定义了检查这些类型的宏定义,如: * `S_ISLNK (st_mode)`: 判断是否为符号连接 * `S_ISREG (st_mode)`: 是否为一般文件 * `S_ISDIR (st_mode)`: 是否为目录 * `S_ISCHR (st_mode)`: 是否为字符装置文件 * `S_ISBLK (st_mode)`: 是否为先进先出 * `S_ISSOCK (st_mode)`: 是否为 socket 如果一目录具有 sticky 位 (`S_ISVTX`), 则表示在此目录下的文件只能被该文件所有者、此目录所有者或 root 来删除或改名。 stat() 函数的返回值为 0 表示执行成功,否则返回 -1,并将错误代码存于 errno 中。可能的错误代码包括: * `ENOENT`: 参数 `file_name` 指定的文件不存在 * `ENOTDIR`: 路径中的目录存在但却非真正的 stat() 函数是一个非常重要的函数,用于获取文件状态信息,它广泛应用于文件管理和访问控制中。
- 粉丝: 50
- 资源: 256
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 适用于 Raspberry Pi 的 Adafruit 库代码.zip
- 章节2:编程基本概念之python程序的构成
- 适用于 Python 的 LINE 消息 API SDK.zip
- 宝塔面板安装及关键网络安全设置指南
- 适用于 Python 的 AWS 开发工具包.zip
- 适用于 Python 3 的 Django LDAP 用户身份验证后端 .zip
- 基于PBL-CDIO的材料成型及控制工程课程设计实践与改革
- JQuerymobilea4中文手册CHM版最新版本
- 适用于 Python 2 和 3 以及 PyPy (ws4py 0.5.1) 的 WebSocket 客户端和服务器库.zip
- 适用于 AWS 的 Python 无服务器微框架.zip