stat函数使用

stat函数使用要点 通过 stat 函数获取文件属性代码示例 运行结果 a outa outatime mtime ctime a outxyz outErroroccu

stat是非常常用的一个函数,可以获取文件的一些属性,或判断文件的类型。

下面直接取自man 2 stat中的示例代码:

#include <sys/types.h> #include <sys/stat.h> #include <time.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { struct stat sb; if (argc != 2) { fprintf(stderr, "Usage: %s <pathname>\n", argv[0]); exit(EXIT_FAILURE); } if (stat(argv[1], &sb) == -1) { perror("stat"); exit(EXIT_FAILURE); } printf("File type: "); switch (sb.st_mode & S_IFMT) { case S_IFBLK: printf("block device\n"); break; case S_IFCHR: printf("character device\n"); break; case S_IFDIR: printf("directory\n"); break; case S_IFIFO: printf("FIFO/pipe\n"); break; case S_IFLNK: printf("symlink\n"); break; case S_IFREG: printf("regular file\n"); break; case S_IFSOCK: printf("socket\n"); break; default: printf("unknown?\n"); break; } printf("I-node number: %ld\n", (long) sb.st_ino); printf("Mode: %lo (octal)\n", (unsigned long) sb.st_mode); printf("Link count: %ld\n", (long) sb.st_nlink); printf("Ownership: UID=%ld GID=%ld\n", (long) sb.st_uid, (long) sb.st_gid); printf("Preferred I/O block size: %ld bytes\n", (long) sb.st_blksize); printf("File size: %lld bytes\n", (long long) sb.st_size); printf("Blocks allocated: %lld\n", (long long) sb.st_blocks); printf("Last status change: %s", ctime(&sb.st_ctime)); printf("Last file access: %s", ctime(&sb.st_atime)); printf("Last file modification: %s", ctime(&sb.st_mtime)); exit(EXIT_SUCCESS); }

flying-bird@flyingbird:~/examples/cpp/stat$ ./a.out Usage: ./a.out <pathname> flying-bird@flyingbird:~/examples/cpp/stat$ ./a.out . File type: directory I-node number:  Mode: 40775 (octal) Link count: 2 Ownership: UID=1000 GID=1000 Preferred I/O block size: 4096 bytes File size: 4096 bytes Blocks allocated: 8 Last status change: Tue May 27 19:44:20 2014 Last file access: Tue May 27 19:44:21 2014 Last file modification: Tue May 27 19:44:20 2014 flying-bird@flyingbird:~/examples/cpp/stat$ ./a.out ./a.out File type: regular file I-node number:  Mode:  (octal) Link count: 1 Ownership: UID=1000 GID=1000 Preferred I/O block size: 4096 bytes File size: 7463 bytes Blocks allocated: 16 Last status change: Tue May 27 19:44:20 2014 Last file access: Tue May 27 19:44:22 2014 Last file modification: Tue May 27 19:44:20 2014 flying-bird@flyingbird:~/examples/cpp/stat$ ll /dev/sd sda sda1 sda2 sda3 sda5 sda6 sda7 sdb sdb1 sdb2 sdb5 sdb6 sdb7 sdc sdd sde sdf flying-bird@flyingbird:~/examples/cpp/stat$ ./a.out /dev/sda File type: block device I-node number: 6645 Mode: 60660 (octal) Link count: 1 Ownership: UID=0 GID=6 Preferred I/O block size: 4096 bytes File size: 0 bytes Blocks allocated: 0 Last status change: Tue May 27 18:41:12 2014 Last file access: Tue May 27 18:41:13 2014 Last file modification: Tue May 27 18:41:12 2014 flying-bird@flyingbird:~/examples/cpp/stat$ ./a.out /dev/sda5 File type: block device I-node number: 461 Mode: 60660 (octal) Link count: 1 Ownership: UID=0 GID=6 Preferred I/O block size: 4096 bytes File size: 0 bytes Blocks allocated: 0 Last status change: Tue May 27 18:41:13 2014 Last file access: Tue May 27 18:55:36 2014 Last file modification: Tue May 27 18:41:13 2014 flying-bird@flyingbird:~/examples/cpp/stat$ 






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2025年7月31日 下午1:01
下一篇 2025年7月31日 下午1:22


相关推荐

  • 微信小程序上传图片失败总结[通俗易懂]

    微信小程序上传图片失败总结[通俗易懂]错误:selfsignedcertificate这个是请求地址需要输第三方认证的域名,这个需要后端人员配置。错误:微信开发工具上可以上传图片,但是到体验版不行提示请求失败这个应该是在微信公众号平台里配置uploadFile合法域名…

    2022年6月18日
    198
  • 【通俗易懂的通信】信道编码之——汉明码

    【通俗易懂的通信】信道编码之——汉明码一 什么是汉明码 hammingcode 汉明码 也称作 海明码 英文名为 hanmingcode 在通信领域中 汉明码 有广泛的应用 由理查德 卫斯里 汉明于 1950 年发明 汉明码 是一种 错误纠正码 可以用来检测并且纠正数据从发送端发往接收端中发生的错误 汉明码的发明者理查德汉明在 1940 年代晚期 运用贝尔模型 V BellModelV 电脑于贝尔实验室 BellLabs 工作 输入端是依靠打孔卡 PunchedCard 这不免会造成些读取错误 在工作日 当机器检测到错

    2026年3月17日
    2
  • java基本类型与引用类型

    java基本类型与引用类型java 基本类型与引用类型目录 java 基本类型与引用类型目录一基本数据类型二引用类型三基本类型与引用类型的区别默认值内存分配自动装箱自动拆箱自动装箱拆箱带来的问题程序的性能空指针异常对象相等比较时一 基本数据类型 java 中一共分为 8 种基本数据类型 byte short int long float double char b

    2026年3月26日
    2
  • mybatis log plugin 激活码[最新免费获取][通俗易懂]

    (mybatis log plugin 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1M3Q9SD5XW-eyJsa…

    2022年3月28日
    43
  • javaweb-爬虫-3-64

    javaweb-爬虫-3-64

    2021年5月18日
    148
  • Manus大模型

    Manus大模型

    2026年3月15日
    4

发表回复

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

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