引用链接:1)http://zxxruestc.blog.163.com/blog/static/192688339201392672833438/?COLLCC=2478491127&
2)http://blog.csdn.net/dssxk/article/details/6793370
一般在之前都会先调用函数stat( FileName, &fp),意味着将FileName这个文件的信息保存到了地址fp中。此时fp.st_mode就是文件FileName的模式,所以S_ISDIR(fp.st_mode)的函数功能是判断fp所指向文件(也就是FileName)是否为目录(dir)类型。
功能是判断一个路径是否为目录。
S_ISLNK(st_mode): 是否是一个连接.
S_ISREG:是否是一个常规文件.
S_ISDIR:是否是一个目录S_ISCHR是否是一个字符设 备.
S_ISBLK:是否是一个块设备
S_ISFIFO: 是否是一个FIFO文件.
S_ISSOCK: 是否是一个SOCKET文件
man 2 stat 可以查到stat数据结构,其中的st_mode就是上面几个宏的输入参数
1 struct stat { 2 dev_t st_dev; 3 ino_t st_ino; 4 mode_t st_mode; 5 nlink_t st_nlink; 6 uid_t st_uid; 7 gid_t st_gid; 8 dev_t st_rdev; 9 off_t st_size; 10 blksize_t st_blksize; 11 blkcnt_t st_blocks; 12 time_t st_mtime; 13 time_t st_ctime; 14 };
man 2 stat还可以查到下面的函数定义,用这个函数来获取指定文件(夹)的stat信息,然后带入上面的宏,判断文件(夹)的属性:是否是个常规文件、是否是一个目录……
int stat(const char *path, struct stat *buf)