• fstat、stat和lstat 区别


    http://hi.baidu.com/wlwqs/item/47c411334e53a5ffdf222150

     

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

    int stat(const char *path, struct stat *buf);

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

    一眼就能看出来fstat的第一个参数是和另外两个不一样的,fstat区别于另外两个系统调用的地方在于,fstat系统调用接受的是 一个“文件描述符”,而另外两个则直接接受“

    文件全路径”。文件描述符是需要我们用open系统调用后才能得到的,而文件全路经直接写就可以了。

    stat和lstat的区别:当文件是一个符号链接时,lstat返回的是该符号链接本身的信息;而stat返回的是该链接指向的文件的信息。(这样记,lstat比stat多了一个l,因此它是

    有本事处理符号链接文件的,因此当遇到符号链接文件时,lstat当然不会放过。而 stat系统调用没有这个本事,它只能对符号链接文件睁一只眼闭一只眼,直接去处理链接所指

    文件喽) 

    1. /* 
    2.  * Linux文件属性结构体信息 
    3.  * struct stat 
    4.  * { 
    5.  *  dev_t st_dev;//设备 
    6.  *  ino_t st_ino;//结点 
    7.  *  mode_t st_mode;//模式 
    8.  *  nlink_t st_nlink;//硬连接 
    9.  *  uid_t st_uid;//用户ID 
    10.  *  gid_t st_gid;//组ID 
    11.  *  dev_t st_rdev;//设备类型 
    12.  *  off_t st_off;//文件字节数 
    13.  *  unsigned long st_blksize;//块大小 
    14.  *  unsigned long st_blocks;//块数 
    15.  *  time_t st_atime;//最后一次访问时间 
    16.  *  time_t st_mtime;//最后一次修改时间 
    17.  *  time_t st_ctime;//最后一次属性改变时间 
    18.  * } 
    19.  * 可通过stat或fstat函数获得文件的其他属性 
    20.  * stat函数用来判断没有打开的文件,而fstat函数用来判断打开的文件。 
    21.  * 
    22.  */ 
    23. #include <unistd.h>  
    24. #include <sys/stat.h>   
    25. int main(void)  
    26. {  
    27.     struct stat buf;  
    28.     stat("/etc/passwd",&buf);  
    29.     /* 
    30.      * stat函数 
    31.      * 取得文件的属性 
    32.      * sys/stat.h,unistd.h 
    33.      * int stat(const char *file_name,struct stat*buf); 
    34.      * 将参数file_name所指的文件状态复制到参数buf所指的结构中 
    35.      * 成功返回0,失败返回-1,错误存储于errno 
    36.      */  
    37.     printf("/etc/passwd文件的大小是:%d/n",buf.st_size);  
    38.     printf("/etc/passwd文件的最后一次修改时间是:%d/n",buf.st_ctim);  
    39.     return 0;  
    40. }  
  • 相关阅读:
    UITextField 获取焦点
    iphone自动隐藏和显示工具栏和导航条
    01maya基础
    Windows10开机自动运行批处理、脚本等的方法
    吉他自学
    设置博客园的博客,不允许选择和复制
    .net简单的静态页生成
    尚未配置为Web项目.指定的本地IIS URL http://localhsst/..要打开项目,需要配置虚拟目录 。是否立即创建虚拟目录 解决
    unity3d自带帮助文档的打开方法
    url重写步骤
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/2952617.html
Copyright © 2020-2023  润新知