如何在 C 中调用 readdir() 时检查 ent.d->name 是文件还是目录,其中 ent 的类型为 struct dirent*。
Vivek Sharma
问问题
222 次
2 回答
2
这就是S_ISREG()
与.S_ISDIR()
一起使用时的用途和用途stat(2)
。有关详细信息,请参见其手册页。
如果您可以忍受不完全符合 POSIX,您可以使用DT_REG()
和DT_DIR()
分别检查目录性和规则性。这在readdir(3)
.
于 2013-03-22T14:02:50.660 回答
0
另一种方法是尝试在 d_name 上调用 opendir() 并查看它是否返回 null:
int isDir(struct dirent *ent)
{
if (ent && strcmp(ent->d_name, ".") && strcmp(ent->d_name, "..")) // don't include pwd and parent dir
{
DIR *isDir = opendir(ent->d_name);
if (isDir)
return 1;
}
return 0;
}
于 2013-03-22T15:10:48.700 回答