1. //! 需要包含de头文件
  2. #include <sys/types.h>
  3. #include <sys/stat.h>

S_ISLNK(st_mode):是否是一个连接.
S_ISREG(st_mode):是否是一个常规文件.
S_ISDIR(st_mode):是否是一个目录
S_ISCHR(st_mode):是否是一个字符设备.
S_ISBLK(st_mode):是否是一个块设备
S_ISFIFO(st_mode):是否 是一个FIFO文件.
S_ISSOCK(st_mode):是否是一个SOCKET文件 

  1. int stat(const char *filename, struct stat *buf); //! prototype,原型
  2. struct stat
  3. {
  4. dev_t       st_dev;     /* ID of device containing file -文件所在设备的ID*/
  5. ino_t       st_ino;     /* inode number -inode节点号*/
  6. mode_t      st_mode;    /* protection -保护模式?*/
  7. nlink_t     st_nlink;   /* number of hard links -链向此文件的连接数(硬连接)*/
  8. uid_t       st_uid;     /* user ID of owner -user id*/
  9. gid_t       st_gid;     /* group ID of owner - group id*/
  10. dev_t       st_rdev;    /* device ID (if special file) -设备号,针对设备文件*/
  11. off_t       st_size;    /* total size, in bytes -文件大小,字节为单位*/
  12. blksize_t   st_blksize; /* blocksize for filesystem I/O -系统块的大小*/
  13. blkcnt_t    st_blocks;  /* number of blocks allocated -文件所占块数*/
  14. time_t      st_atime;   /* time of last access -最近存取时间*/
  15. time_t      st_mtime;   /* time of last modification -最近修改时间*/
  16. time_t      st_ctime;   /* time of last status change - */
  17. };

  1. #include <iostream>
  2. #include <ctime>
  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5. using namespace std;
  6. int
  7. main ()
  8. {
  9. struct stat buf;
  10. int result;
  11. result = stat ("./Makefile", &buf);
  12. if (result != 0)
  13. {
  14. perror ("Failed ^_^");
  15. }
  16. else
  17. {
  18. //! 文件的大小,字节为单位
  19. cout << "size of the file in bytes: " << buf.st_size << endl;
  20. //! 文件创建的时间
  21. cout << "time of creation of the file: " << ctime (&buf.st_ctime) <<
  22. endl;
  23. //! 最近一次修改的时间
  24. cout << "time of last modification of the file: " <<
  25. ctime (&buf.st_mtime) << endl;
  26. //! 最近一次访问的时间
  27. cout << "time of last access of the file: " << ctime (&buf.st_atime)
  28. << endl;
  29. }
  30. return 0;
  31. }

  1. $ ./test
  2. size of the file in bytes: 36
  3. time of creation of the file: Sun May 24 18:38:10 2009
  4. time of last modification of the file: Sun May 24 18:38:10 2009
  5. time of last access of the file: Sun May 24 18:38:13 2009

struct stat结构体的详解和用法的更多相关文章

  1. 结构体指针,C语言结构体指针详解

    结构体指针,可细分为指向结构体变量的指针和指向结构体数组的指针. 指向结构体变量的指针 前面我们通过“结构体变量名.成员名”的方式引用结构体变量中的成员,除了这种方法之外还可以使用指针. 前面讲过,& ...

  2. inode结构体成员详解

    概述:inode译成中文就是索引节点,它用来存放档案及目录的基本信息,包含时间.档名.使用者及群组等.inode分为内存中的inode和文件系统中的inode,为了避免混淆,我们称前者为VFS ino ...

  3. Solidity的自定义结构体深入详解

    一.结构体定义 结构体,Solidity中的自定义类型.我们可以使用Solidity的关键字struct来进行自定义.结构体内可以包含字符串,整型等基本数据类型,以及数组,映射,结构体等复杂类型.数组 ...

  4. IPv4地址结构体sockaddr_in详解

    sockaddr_in结构体定义 struct sockaddr_in { sa_family_t sin_family; //地址族(Address Family) uint16_t sin_por ...

  5. struct socket结构体详解

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://weiguozhihui.blog.51cto.com/3060615/15852 ...

  6. Scala 深入浅出实战经典 第53讲:Scala中结构类型实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  7. struct ifreq结构体与ip,子网掩码,网关等信息

    总结一下,今天学习的关于通过socket,ioctl来获得ip,netmask等信息,其中很多内容参照了很多网上的信息,我会一一列出的 我用的这个函数,就是下面这个函数,其中的有一些全局变量,很好懂, ...

  8. Golang面向对象编程-struct(结构体)

    Golang面向对象编程-struct(结构体) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是面向对象编程 面向对象编程(Object Oriented Program ...

  9. struct timeval结构体 以及 gettimeofday()函数(转)

    struct timeval结构体 转载地址:http://blog.chinaunix.net/uid-20548989-id-2533161.html 该结构体是Linux系统中定义,struct ...

随机推荐

  1. 【现代程序设计】homework-06

    1) 把程序编译通过, 跑起来. 读懂程序,在你觉得比较难懂的地方加上一些注释,这样大家就能比较容易地了解这些程序在干什么. 把正确的 playPrev(GoMove) 的方法给实现了. 如果大家不会 ...

  2. ☆☆配置NDK环境

    1 前提是 已经配置好 安卓SDK开发环境. 2 下载 android-ndk64-r10-windows-x86_64,可以从官方网站下载,这里有一个现成的. http://pan.baidu.co ...

  3. 【HTML5】Video + DOM

    效果图: <!DOCTYPE html> <html> <body> <div style="text-align:center;"> ...

  4. 文件上传漏洞演示脚本之js验证

    文件上传漏洞演示脚本之js验证 0 0       716   关于文件上传漏洞,想必玩web安全的同学们都有接触,之前本站也发布过一篇文章介绍文件上传漏洞的各种绕过方法,但是只是有文档却没有演示代码 ...

  5. 3.PopupWindow 、拍照、裁剪

    实现这样的效果 圆角图片的自定义控件直接拷进来,和com一个等级 想要弹出内容可以使用悬浮窗 layout_pupup <LinearLayout xmlns:android="htt ...

  6. C# 序列化(Serialize)与反序列化(Deserialize)ZZ

    序列化又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制.其目的是以某种存储形成使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方. .NET框架提供了两种种串行化的方式:1. ...

  7. slice、substring和substr

    首先,他们都接收两个参数,slice和substring接收的是起始位置和结束位置(不包括结束位置),而substr接收的则是起始位置和所要返回的字符串长度.直接看下面例子: 1    var tes ...

  8. Codeforces Round #213 (Div. 2) B. The Fibonacci Segment

    #include <iostream> #include <algorithm> #include <vector> using namespace std; in ...

  9. TYVJ P1020 导弹拦截 Label:水

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  10. TYVJ 1011 NOIP 2008&&NOIP 2000 传纸条&&方格取数 Label:多线程dp

    做题记录:2016-08-15 15:47:07 背景 NOIP2008复赛提高组第三题 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...