Uso de estadísticas()/lstat()

La función stat() y la función lstat() son funciones utilizadas para obtener información de archivos o directorios y pueden devolver una estructura que contiene varios atributos del archivo o directorio.

A continuación se ofrece una breve explicación de cómo utilizar estas dos funciones:

función estadística()

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

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

ruta: La ruta del archivo o directorio del cual se va a obtener la información.
buf: Estructura utilizada para almacenar la información obtenida. La definición de la estructura de estadísticas es la siguiente:

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;       // 最后更改时间
};

Valor de retorno: devuelve 0 si la llamada se realiza correctamente, -1 si falla y establece errno para indicar el error.

función lstat()

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

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

La función lstat() tiene funciones similares a la función stat(), la diferencia es que la función lstat() no sigue el enlace simbólico para el análisis, sino que devuelve la información del enlace simbólico en sí. Otros parámetros y valores de retorno son los mismos que los de la función 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;
}

Supongo que te gusta

Origin blog.csdn.net/neuzhangno/article/details/132452161
Recomendado
Clasificación