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;
}