• stat/lstat函数使用


    1. 进程虚拟地址空间

    2. stat函数

    • 获取文件信息
           #include <sys/types.h>
           #include <sys/stat.h>
           #include <unistd.h>
    
           int stat(const char *pathname, struct stat *statbuf);
           int fstat(int fd, struct stat *statbuf);
           int lstat(const char *pathname, struct stat *statbuf);
    
           #include <fcntl.h>           /* Definition of AT_* constants */
           #include <sys/stat.h>
    
           int fstatat(int dirfd, const char *pathname, struct stat *statbuf,
                       int flags);
               struct stat {
                   dev_t     st_dev;         /* ID of device containing file */
                   ino_t     st_ino;         /* Inode number */
                   mode_t    st_mode;        /* File type and mode */
                   nlink_t   st_nlink;       /* Number of hard links */
                   uid_t     st_uid;         /* User ID of owner */
                   gid_t     st_gid;         /* Group ID of owner */
                   dev_t     st_rdev;        /* Device ID (if special file) */
                   off_t     st_size;        /* Total size, in bytes */
                   blksize_t st_blksize;     /* Block size for filesystem I/O */
                   blkcnt_t  st_blocks;      /* Number of 512B blocks allocated */
    
                   /* Since Linux 2.6, the kernel supports nanosecond
                      precision for the following timestamp fields.
                      For the details before Linux 2.6, see NOTES. */
    
                   struct timespec st_atim;  /* Time of last access */
                   struct timespec st_mtim;  /* Time of last modification */
                   struct timespec st_ctim;  /* Time of last status change */
    
               #define st_atime st_atim.tv_sec      /* Backward compatibility */
               #define st_mtime st_mtim.tv_sec
               #define st_ctime st_ctim.tv_sec
               };

    stat函数参数

    • pathname 文件名
    • struct stat *buf 传出参数,定义 struct stat sb; &sb

    返回值

    • 成功返回0,失败返回-1,设置errno
    #include <sys/types.h> 
    #include <sys/stat.h>  
    #include <unistd.h>    
    #include <stdio.h>
      
    int main(int argc, char *argv[])
    {
        if (argc != 2) {   
            printf("./a.out filename
    ");
            return -1;     
        }
        struct stat sb;    
        stat(argv[1], &sb);
      
        return  0;
      
    }

  • 相关阅读:
    Linux查看所有用户用什么命令
    Sudoku Solver
    Restore IP Addresses
    Implement strStr()
    Insert Interval
    Recover Binary Search Tree
    First Missing Positive
    Rotate List
    Longest Palindromic Substring
    4Sum
  • 原文地址:https://www.cnblogs.com/douzujun/p/10628683.html
Copyright © 2020-2023  润新知