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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于 SpringBoot + Vue 的商城系统附带小程序源码

    简介 又一个小商场系统,Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端 + Vue用户移动端。 项目架构 技术栈 Spring Boo…

    2021年6月23日
    111
  • es 其实是不是就是数据库_初识ES数据库「建议收藏」

    es 其实是不是就是数据库_初识ES数据库「建议收藏」一、什么是Elasticsearch1、概念以及特点1、Elasticsearch和MongoDB/Redis/Memcache一样,是非关系型数据库。是一个接近实时的搜索平台,从索引这个文档到这个文档能够被搜索到只有一个轻微的延迟,企业应用定位:采用RestfulAPI标准的可扩展和高可用的实时数据分析的全文搜索工具。2、可拓展:支持一主多从且扩容简易,只要cluster.name一致且在同一…

    2022年5月30日
    92
  • BigDecimal详解 BigDecimal加减乘除运算 BigDecimal比较大小 BigDecimal保留两位小数

    BigDecimal详解 BigDecimal加减乘除运算 BigDecimal比较大小 BigDecimal保留两位小数文章目录1、为什么要用BigDecimal?2、BigDecimal初始化赋值3、BigDecimal的加减乘除运算4、BigDecimal比较大小5、BigDecimal保留两位小数及舍入模式6、BigDecimal其他方法及常量1、为什么要用BigDecimal?工作中我们通过浮点数进行运算时,好像时不时的会出现一些小误差。例如:publicstaticvoidmain(String[]args){System.out.println(1.9-1.2);Sys

    2022年6月2日
    53
  • 【其他记录】Office2019专业增强版与Visio2016不能共存的解决办法

    【其他记录】Office2019专业增强版与Visio2016不能共存的解决办法office2019的安装技术是即点即用,visio2016的安装技术是windowsinstaller。(我下载的是这样)本来是先安装好了office2019,接着安装visio2016,显示无法安装visio2016。原因是:即点即用和windowsinstaller的程序不能并存,一次只能安装一种类型。一种简单的解决办法是:把office2019和visio2016全部卸载干净,…

    2022年7月19日
    29
  • Lucene源码解析–TokenStream和AttributeSource

    Lucene源码解析–TokenStream和AttributeSource转 http://blog.itpub.net/28624388/viewspace-765691/一:Lucene的概况&lt;style./*Style.Definitions*/table.MsoNormalTable{mso-style-name:普通表格;mso-tstyle-rowband-size:0;mso-tstyle-colband-size:0;…

    2022年7月22日
    10
  • 卷积及理解图像卷积操作的意义

    卷积及理解图像卷积操作的意义转载:http://blog.csdn.net/chaipp0607/article/details/72236892     https://www.zhihu.com/question/22298352   在图像处理领域,我们经常能听到滤波,卷积之类的词,其实他们都可以看做一种图像的卷积操作,相对应的卷积核,卷积模板,滤波器,滤波模板,扫描窗其实也都是同一个东西。下面我们进一步讨论…

    2022年5月28日
    37

发表回复

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

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