当前位置:   article > 正文

Linux系统下的stat系统函数(C语言)_linux c stat

linux c stat

头文件:

  1. #include <sys/types.h>
  2. #include <sys/stat.h>
  3. #include <unistd.h>

函数原型:
 

  1. int stat(const char* pathname,struct stat* buf);
  2. 参数1:文件路径名
  3. 参数2struct stat类型的结构体

函数返回值:
 

成功返回0,失败返回-1

struct stat结构体详解:

struct stat中的st_mode做了如下定义:
 

  1. S_IFMT 0170000 文件类型的位遮罩
  2. S_IFSOCK 0140000 套接字
  3. S_IFLNK 0120000 符号连接
  4. S_IFREG 0100000 一般文件
  5. S_IFBLK 0060000 区块装置
  6. S_IFDIR 0040000 目录
  7. S_IFCHR 0020000 字符装置
  8. S_IFIFO 0010000 先进先出
  9. S_ISUID 04000 文件的(set user-id on execution)位
  10. S_ISGID 02000 文件的(set group-id on execution)位
  11. S_ISVTX 01000 文件的sticky位
  12. S_IRUSR(S_IREAD) 00400 文件所有者具可读取权限
  13. S_IWUSR(S_IWRITE)00200 文件所有者具可写入权限
  14. S_IXUSR(S_IEXEC) 00100 文件所有者具可执行权限
  15. S_IRGRP 00040 用户组具可读取权限
  16. S_IWGRP 00020 用户组具可写入权限
  17. S_IXGRP 00010 用户组具可执行权限
  18. S_IROTH 00004 其他用户具可读取权限
  19. S_IWOTH 00002 其他用户具可写入权限
  20. S_IXOTH 00001 其他用户具可执行权限
  21. 上述的文件类型在POSIX中定义了检查这些类型的宏定义:
  22. S_ISLNK (st_mode) 判断是否为符号连接
  23. S_ISREG (st_mode) 是否为一般文件
  24. S_ISDIR (st_mode) 是否为目录
  25. S_ISCHR (st_mode) 是否为字符装置文件
  26. S_ISBLK (s3e) 是否为先进先出
  27. S_ISSOCK (st_mode) 是否为socket
  28. 若一目录具有sticky位(S_ISVTX),则表示在此目录下的文件只能被该文件所有者、此目录所有者或root来删除或改名,在linux中,最典型的就是这个/tmp目录啦。

 ​​​​​​

使用stat函数判断是否为目录:

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/523152
推荐阅读
相关标签
  

闽ICP备14008679号