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

     

  • 相关阅读:
    C#中AppDomain.CurrentDomain.BaseDirectory及各种路径获取方法
    Windows 2008 server R2安装.NET Framework4时提示“灾难性故障”
    Mysql explain执行计划
    解决Linux c语言运行时候“段错误 (核心已转储)”问题-采用gdb 解决
    udp-->socket通信原理
    udp通信的原理---makefile文件
    c语言知识点
    linux系统man命令用法和安装方法
    <linux系统c语言生成.so文件,生成64位可执行文件,在64位系统中运行32位的可执行文件>
    ubuntu系统无eth0网卡解决办法
  • 原文地址:https://www.cnblogs.com/wowk/p/3107815.html
Copyright © 2011-2022 走看看