背景
使用power主机不能使用dirent结构体中的d_type判断文件是否为目录
原因分析
在readdir的man手册( https://linux.die.net/man/3/readdir)中,提示d_type不被所有的文件系统支持。
其目前仅被Btrfs,ext2,ext3,ext4文件系统支持。
x86主机ext4文件系统d_type可用于判断文件类型
power主机xfs文件系统d_type无法判断文件类型
解决方法
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
int isdir(const char *pathname)
{
struct stat buf;
if ( 0 != stat(pathname, &buf) )
return -1;
return S_ISDIR(buf.st_mode);
}
int main(int argc, char *argv[])
{
printf("%s is dir ? %d\n", argv[1], isdir(argv[1]));
return 0;
}