我想读取C中目录中所有文件的统计信息(linux:Fedora)
我宣布了这个结构:
struct stat st = {0};
然后我检查目录是否存在。
if(stat("/home/gadre/Source",&st) == -1)
{
status = mkdir("/home/gadre/Source", 0777);
}
syslog(LOG_INFO, "Source Directory stage completed\n");
其中stat是:
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
现在,一旦我进入目录,我想检查最后修改时间st_mtime 每个文件。
任何想法我应该使用什么数据结构......应该首先将fd存储在列表中,然后迭代检查...什么是有效的方法。
感谢。
答案 0 :(得分:1)
通用方法是循环而没有像容器这样的列表,
dp = opendir(fullpath))
的完整路径并获取目录指针dp
while ( (dirp = readdir(dp)) != NULL )
来循环播放
dirp->d_name
filepath = fullpath + "/" + dirp->d_name
lstat
以获取时间戳信息 P.S。我更愿意使用lstat
,因为您目录中的一个文件可能是符号链接,在这种情况下lstat
将返回符号链接本身的时间戳,而不是文件的时间戳。它指向