stat 函数解析

stat 函数解析stat 函数的简单使用 stat 函数是用来获取文件的各种属性的一个 linux 下的常用 API 函数 函数原型为 intstat constchar path structstat buf stat 定义如下 structstat dev tst dev 文件的设备编号 ino tst ino 节点 mode tst m

stat 函数的简单使用

struct stat { dev_t st_dev; //文件的设备编号 ino_t st_ino; //节点 mode_t st_mode;//文件的类型和存取的权限 nlink_t st_nlink;//连接到该文件的硬链接数目,刚建立的文件值为1 uid_t st_uid;//用户的ID gid_t st_gid;//组ID dev_t st_rdev;//(设备类型)若此文件为设备文件,则其为设备的编号 off_t st_size;//文件字节数(文件大小) blksize_t st_blksize;//块大小(文件系统的I/O缓存区大小) blkcnt_t st_blocks;//块数 time_t st_atime;//最后一次访问时间 time_t st_mtime;//最后一次修改时间 time_t st_ctime;//最后一次改变时间(指属性) }; 

st_mode 的定义 –16位整数

0-2--其他人权限(8进制) S_IROTH 00004 读权限 S_IWOTH 00002 写权限 S_IXOTH 00001 执行权限 S_IRWXO 00007 掩码 3-5--所属组权限 S_IRGRP 00040 读权限 S_IWGRP 00020 写权限 S_IXGRP 00010 执行权限 S_IRWXG 00070 掩码 6-8--文件所有者权限 S_IRUSR 00400 读权限 S_IWUSR 00200 写权限 S_IXUSR 00100 执行权限 S_IRWXU 00700 掩码 12-15--文件类型 S_IFSOCK 0 套接字 S_IFLNK 0 符号链接(软连接) S_IFREG 0 普通文件 S_IFBLK 0060000 块设备 S_IFDIR 0040000 目录 S_IFCHR 0020000 字符设备 S_IFIFO 0010000 管道 S_IFMT 掩码,用来过滤文件类型 

statdemo.c

#include 
  
    #include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           int main(int argc,char* argv[]) { struct stat st; if(argc != 2) { fprintf(stderr,"Usage: %s 
          
            \n",argv[0]); exit(EXIT_FAILURE); } if(stat(argv[1],&st) == -1) { perror("stat"); exit(EXIT_FAILURE); } printf("主设备号为:%lx,次设备号为%lx\n",(long) major(st.st_dev)),(long) minor(st.st_dev); printf("文件类型为:"); switch(st.st_mode & S_IFMT) { case S_IFBLK: printf("设备文件\n"); break; case S_IFCHR: printf("字符设备\n"); break; case S_IFDIR: printf("目录\n"); break; case S_IFIFO: printf("管道文件\n"); break; case S_IFLNK: printf("软连接文件\n"); break; case S_IFREG: printf("普通文件\n"); break; case S_IFSOCK: printf("套接字文件\n"); break; default: printf("未知文件\n"); break; } printf("节点号为 %ld\n", (long) st.st_ino); printf("文件权限为: %lo (octal)\n",(unsigned long) st.st_mode); printf("链接数为: %ld\n", (long) st.st_nlink); printf("所有者: 用户为:%s, 组为:%s\n",getpwuid(st.st_uid)->pw_name,getgrgid(st.st_gid)->gr_name); printf("I/O缓存区大小为:%ld",(long) st.st_blksize); printf("文件大小为:%lld 字节\n",(long long) st.st_size); printf("块数为:%lld字节\n",(long long) st.st_blocks); printf("最后一次文件属性改变时间: %s",ctime(&st.st_ctime)); printf("最后一次修改时间: %s",ctime(&st.st_mtime)); printf("最后一次访问时间: %s",ctime(&st.st_atime)); return 0; } 
           
          
         
        
       
      
     
    
  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215007.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午2:55
下一篇 2026年3月18日 下午2:55


相关推荐

  • JRTPLIB 3.9.1文档翻译

    JRTPLIB 3.9.1文档翻译MainPageJRTPLIBAuthor:      JoriLiesenborgs      DevelopedattheTheExpertiseCentreforDigitalMedia(EDM),aresearchinstituteoftheHasseltUniversityAcknowledg

    2022年7月28日
    6
  • 影视站长必备资料合集

    影视站长必备资料合集苹果cms最新程序官方网盘:https://www.lanzous.com/u/magicblack推荐使用卧龙资源:http://wolongzy.net(速度快,稳定)共有资源30719+八戒资源站http://zy.bajieziyuan.com(秒播)共有资源20308+麻花资源资源站http://www.mahuazy.ne…

    2022年10月19日
    4
  • 做事的真正态度

    做事的真正态度

    2022年1月12日
    51
  • Java安全之ysoserial-JRMP模块分析(一)

    Java安全之ysoserial-JRMP模块分析(一)首发安全客:Java安全之ysoserial-JRMP模块分析(一)0x00前言在分析到Weblogic后面的一些绕过方式的时候,分析到

    2021年12月12日
    61
  • mybatis log plugin激活码(JetBrains全家桶)

    (mybatis log plugin激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZPB5EL5Q-eyJsaWNlbnNlSWQiOi…

    2022年3月21日
    83
  • extremedb是开源的吗_最简单的数据库开发软件

    extremedb是开源的吗_最简单的数据库开发软件最近我接触了嵌入式数据库eXtremeDB,由于这方面资料很少,网上的参考资料都大同小异,只靠着软件本身提供的参考文档进行开发,所以刚开始开发有些困难。故将基本的用法整理一下。关于eXtremeDB的特性,这里就不阐述了,直接从开发开始。下面以简单的模板为例进行阐述。1.构建.mco文件打开记事本,然后另存为XX.mco后缀文件。.mco文件里面需要定义数据库所需的字段类型,名称等,…

    2022年10月14日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号