• struct stat / lstat function


     今天在看源码是碰到了这个结构和函数,感觉挺不错的,所以就记下了

    #include <sys/types.h>

    #include <sys/stat.h>

     struct stat的用法 2010-12-09 17:35:20

    分类: C/C++

    预备知识:
    1.    函数名: lstat 
          需要包含的头文件:
                #include <sys/types.h>
                #include <sys/stat.h>
      功 能: 获取一些文件相关的信息
      用 法: int lstat(const char *path, struct stat *buf);
      参数: 
      path:文件路径名。
      buf:是以下结构体的指针
          
    struct stat
    {
    dev_t st_dev; /* ID of device containing file -文件所在设备的ID*/
    ino_t st_ino; /* inode number -inode节点号*/
    mode_t st_mode; /* protection -保护模式?*/
    nlink_t st_nlink; /* number of hard links -链向此文件的连接数(硬连接)*/
    uid_t st_uid; /* user ID of owner -user id*/
    gid_t st_gid; /* group ID of owner - group id*/
    dev_t st_rdev; /* device ID (if special file) -设备号,针对设备文件*/
    off_t st_size; /* total size, in bytes -文件大小,字节为单位*/
    blksize_t st_blksize; /* blocksize for filesystem I/O -系统块的大小*/
    blkcnt_t st_blocks; /* number of blocks allocated -文件所占块数*/
    time_t st_atime; /* time of last access -最近存取时间*/
    time_t st_mtime; /* time of last modification -最近修改时间*/
    time_t st_ctime; /* time of last status change - */
    };

    2. lstat函数返回说明:
      成功执行时,返回0。失败返回-1,errno被设为以下的某个值
      EBADF: 文件描述词无效
      EFAULT: 地址空间不可访问
      ELOOP: 遍历路径时遇到太多的符号连接
      ENAMETOOLONG:文件路径名太长
      ENOENT:路径名的部分组件不存在,或路径名是空字串
      ENOMEM:内存不足
      ENOTDIR:路径名的部分组件不是目录

    程序清单:

    #include <iostream>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <ctime>

    using namespace std;

    int main(int argc,char *argv[])
    {
        int rtn;
        struct stat buf;
        char *filename = "/home/eagle/test/readdir.c";

        rtn = stat(filename,&buf);
        if(rtn != 0)
        {
            perror("Failed");
        }
        else
        {
            cout<<"The size of "<<filename<<" in bytes:"<<buf.st_size<<endl;
            cout<<"The time of last access:"<<ctime(&buf.st_atime)<<endl;
            cout<<"The time of last modification:"<<ctime(&buf.st_mtime)<<endl;
            cout<<"The user ID is:"<<buf.st_uid<<endl;
        }
        return 0;
    }

    程序执行结果:
    The size of /home/eagle/test/readdir.c in bytes:501
    The time of last access:Thu Dec  9 16:56:31 2010

    The time of last modification:Thu Nov 18 17:20:42 2010

    The user ID is:1015
  • 相关阅读:
    IceMx.Mvc 我的js MVC 框架 二、视图的数据绑定
    IceMx.Mvc 我的js MVC 框架 一、html代码的分离(视图)
    Android Socket编程基础
    第七次作业
    第六次作业
    第五次作业
    第4次作业
    关于个人项目的总结,最主要是不足
    第二次作业
    微信的优缺点以及发展史
  • 原文地址:https://www.cnblogs.com/LxwEmbedded/p/4103429.html
Copyright © 2020-2023  润新知