【发布时间】:2019-04-03 08:21:21
【问题描述】:
我在检查修改日期时遇到问题。 fprintf 在控制台中为文件夹中的每个文件打印相同的数字等于 0。
while (1) {
source = opendir(argv[1]);
while ((file = readdir(source)) != NULL) {
if (file->d_type != DT_REG)
continue;
stat(file->d_name, &file_details);
fprintf(stderr, "Name: %s, Last modify: %ld \n", file->d_name, file_details.st_mtime);
}
closedir(source);
sleep(5);
}
【问题讨论】:
-
错误检查!你没有。您需要添加它。我的猜测是
stat返回-1和errno == ENOENT。 -
并提示我认为问题所在:
file->d_name只是文件名,而不是完整路径。 -
如何获得完整路径?
-
@kamilm758 您必须通过连接目录名和文件名来构建它,当然,
/介于两者之间。另一种方法是进入被扫描的目录,chdir().