#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
/**
* 判断路径是目录还是文件
*/
void pathType(const char* filename)
{
struct stat info;
int r=stat(filename, &info);
printf("%s ", filename);
if(r==0)
{
if(S_ISDIR(info.st_mode)) printf("folder\n");
else printf("file\n");
}else
{
if( errno==ENOENT) printf("nonexistent\n");
else printf("error");
}
}
int main()
{
pathType("/etcc"); // nonexistent
pathType("/etc/host"); // file
pathType("/etc"); // folder
return 0;
}
结果如图所示:
struct stat详解链接。