stat()/lstat()的使用

47 篇文章 0 订阅

stat()函数和lstat()函数都是用于获取文件或目录的信息的函数,它们可以返回包含文件或目录的各种属性的结构体。

这里是关于这两个函数的使用方法的简要说明:

stat()函数

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

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

path:要获取信息的文件或目录的路径。
buf:用于存储被获取信息的结构体。stat结构体的定义如下:

struct stat {
    dev_t     st_dev;         // 设备ID
    ino_t     st_ino;         // i-node号
    mode_t    st_mode;        // 文件类型和权限
    nlink_t   st_nlink;       // 连接数
    uid_t     st_uid;         // 用户ID
    gid_t     st_gid;         // 组ID
    dev_t     st_rdev;        // 特殊文件设备ID
    off_t     st_size;        // 文件大小,字节为单位
    blksize_t st_blksize;     // 文件系统I/O缓冲区大小
    blkcnt_t  st_blocks;      // 所占用的块数
    time_t    st_atime;       // 最后访问时间
    time_t    st_mtime;       // 最后修改时间
    time_t    st_ctime;       // 最后更改时间
};

返回值:调用成功返回0,失败返回-1,并设置errno来表示错误。

lstat()函数

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

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

lstat()函数与stat()函数的功能类似,不同之处在于lstat()函数不会跟随符号链接进行解析,而是返回符号链接本身的信息。其他参数和返回值与stat()函数相同

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

int main() {
    const char* filePath = "/path/to/file.txt";
    struct stat fileInfo;

    if (stat(filePath, &fileInfo) == 0) {
        std::cout << "File size: " << fileInfo.st_size << " bytes" << std::endl;
        // 可以使用其他的fileInfo成员获取更多文件信息
    } else {
        std::cerr << "Failed to get file information." << std::endl;
    }

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值