【发布时间】:2012-07-03 01:53:18
【问题描述】:
好的,所以我遇到了一些问题。这是我的代码(在此之前调用了 opendir()):
while( (dp = readdir(dfd)) != NULL ) {
if( strcmp(dp->d_name, ".") == 0 || strcmp(dp->d_name, "..") == 0)
continue;
lstat(dp->d_name, &stbuf);
printf("%s: ", dp->d_name);
if( S_ISDIR(stbuf.st_mode) )
puts("Directory");
else if ( S_ISREG(stbuf.st_mode) )
puts("File");
else if ( S_ISCHR(stbuf.st_mode) )
puts("Character Device");
else if ( S_ISBLK(stbuf.st_mode) )
puts("Block Device");
else if ( S_ISFIFO(stbuf.st_mode) )
puts("Fifo");
else if ( S_ISLNK(stbuf.st_mode) )
puts("Link");
else
puts("Socket");
}
return;
}
我正在阅读目录并确定其中的文件类型。唯一的问题是这将始终打印“目录”,我相信这与对 lstat 的调用有关。我不完全确定如何适当地改变它。
【问题讨论】:
-
您需要在文件名前面加上路径; lstat() 不知道文件在哪个目录。还要检查 lstat() 的返回值