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


相关推荐

  • 伴随矩阵求逆矩阵(已知A的伴随矩阵求A的逆矩阵)

    在之前的文章《线性代数之矩阵》中已经介绍了一些关于矩阵的基本概念,本篇文章主要就求解逆矩阵进行进一步总结。余子式(Minor)我们先看例子来直观的理解什么是余子式(Minor,后边将都用英文Minor,中文的翻译较乱)。minorexample这个例子(我们假设矩阵为A)中我们看到A[1,1]的minor就是将A[1,1]所在的行和列删除后剩下的矩阵的行列式,假设我们把A[…

    2022年4月13日
    150
  • 【转载】COM文件与EXE文件的区别与联系

    【转载】COM文件与EXE文件的区别与联系

    2021年11月18日
    37
  • 虚拟串口模拟器和串口调试助手使用教程「建议收藏」

    虚拟串口模拟器和串口调试助手使用教程「建议收藏」虚拟串口(虚拟COM端口),应该很多人都知道,也就是一种模拟物理串行接口的软件。它完全复制了硬件COM接口的功能,并且将被操作系统和串行应用程序识别为真实端口。以前的电脑,基本标配都包含一个串口。但现在的电脑,基本都没有配置串口了。如果要使用串口的功能,基本就要用一个USB转串口的硬件模块。现实生活中,虚拟串口用处很多。比如:你的应用程序检测串行输入数据的时候,方便调试。还比如:多个有应用程序之间使用串口通信。虚拟串口软件推荐:强大的虚拟串口软件串口调试助手软件有很多,随便选一个自己

    2022年6月12日
    51
  • pytorch tensor类型转换_pytorch转caffe

    pytorch tensor类型转换_pytorch转caffetorch.Tensor类型的数据loss和acc打印时,如果写成以下写法print(‘batch_loss:’+str(loss.data)+’batchacc:’+str(acc.data))则不仅会打印出loss和acc的值,还会打印出device信息和tensor字样,如下:如果仅想打印出数值,使得打印出的信息更加简洁,则要用以下写法print(‘batch_loss:{:.3f}ba…

    2022年10月10日
    2
  • 生物识别指纹_生物指纹识别技术

    生物识别指纹_生物指纹识别技术锁屏要使用指纹解锁,首先要注册指纹服务,我看过的一些大厂项目中,实际上是在KeyguardUpdate.java类中发起注册的,一般是根据当前状态,是不是已经处于上锁状态(侧边指纹机器,是不等上锁即进行指纹服务注册,屏下指纹需要等上锁后,才发起指纹服务注册)。………………………

    2022年8月10日
    12
  • 服务器要删除文件访问被拒绝,删除文件提示:文件夹访问被拒绝 需要来自administrator权限执行操作…

    服务器要删除文件访问被拒绝,删除文件提示:文件夹访问被拒绝 需要来自administrator权限执行操作…有时候我们在删除一些系统重要文件,或者被保护的文件的时候,会出现对话框,提示我们您需要来自administrator权限才能对此文件夹进行更改,这是什么原因导致的?今天小编就为大家分析下解决办法。方法/步骤1、右键点击提示我们需要权限的文件夹,然后点击【属性】选项。2、进入文件夹属性界面在上方菜单栏处,找到【安全】选项,然后点击下方的高级选项。3、进入高级选项,点击上方【所有者】,然后点击下方的编…

    2025年7月9日
    2

发表回复

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

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