S_ISREG等几个常见的宏 struct stat

引用链接: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)

 

posted @ 2017-03-02 16:09  Cyril_Wu  阅读(644)  评论(0编辑  收藏  举报