zoukankan      html  css  js  c++  java
  • 第四章:文件stat获取函数

    所在的头文件 <sys/stat.h>

    struct  stat{

      mode_t  st_mode;  /*文件的访问模式*/

      ino_t   st_ino;  /*i节点的信息*/

      dev_t    st_dev;  /*设备号*/

      dev_t   st_rdev;  /*特殊文件的设备号*/

      nlink_t  st_nlink;  /*硬链接接数*/

      uid_t    st_uid;    /*文件所有者的用户ID*/

      gid_t    st_gid;  /*文件所有者的组ID*/

      off_t    st_size;  /*普通文件的大小*/

      time_t  st_atime; /*文件的访问时间*/

      time_t  st_mtime;  /*文件的修改时间*/

      time_t  st_ctime; /*文件的状态改变时间*/

      blksize_t st_blksize;/*最佳I/O块大小*/

      blkcnt_t  st_blocks;/*文件所占用的磁盘块*/

    }

    注意:st_rdev  st_blksize  st_blocks  这三个字段不是  POSIX.1  要求的

    1、stat函数

      int  stat(const char* restrict pathname , struct stat * restrict   buf);

      跟随符号链接,该函数指定一个符号链接的时候,函数返回的是符号链接指向的文件的信息

     1 #include<stdio.h>
     2 #include<unistd.h>
     3 #include<sys/stat.h>
     4 
     5 int
     6 main(int argc, char** argv)
     7 {
     8         struct  stat    buf;
     9 
    10         stat(argv[1],&buf);
    11 
    12         printf("文件访问标志    :%o\n",buf.st_mode);
    13         printf("设备号          :%d\n",buf.st_dev);
    14         printf("特殊设备文件号  :%d\n",buf.st_rdev);
    15         printf("硬链接数        :%d\n",buf.st_nlink);
    16         printf("文件所有者用户ID:%d\n",buf.st_uid);
    17         printf("文件所有者组ID  :%d\n",buf.st_gid);
    18         printf("普通文件的大小  :%d\n",buf.st_size);
    19         printf("上次访问时间    :%d\n",buf.st_atime);
    20         printf("上次修改时间    :%d\n",buf.st_mtime);
    21         printf("上次状态更新时间:%d\n",buf.st_ctime);
    22         printf("最佳I/O块大小   :%d\n",buf.st_blksize);
    23         printf("文件所占块数    :%d\n",buf.st_blocks);
    24 
    25         return  0;
    26 }

      

    2、fstat函数

      int  fstat(int  fd, struct stat * buf);

      fstat 同 stat , 但是只是从文件描述符上获取 文件的 stat 信息

    3、lstat函数

      int  lstat(const char * restrict pathname , struct stat * buf);

      lstat函数同stat函数, 但是 lstat 函数不跟随符号链接 , 当访问符号链接的时候, 获取的是符号链接本身的stat,而不是其指向的文件的stat

     

  • 相关阅读:
    JDK各版本新特性总结
    Java MyBatis3(3)分页插件PageHelper
    Kubernetes--K8S
    MySQL 查看表结构
    查看mysql库大小,表大小,索引大小
    Linux服务器安装Oracle服务端总结
    怎样玩转千万级别的数据
    Markdown 新手指南
    深入理解Java:注解(Annotation)基本概念
    深入理解Java:注解(Annotation)自定义注解入门
  • 原文地址:https://www.cnblogs.com/wowk/p/3107815.html
Copyright © 2011-2022 走看看