zoukankan      html  css  js  c++  java
  • 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. }  
  • 相关阅读:
    Core Foundation框架(2)命名规范,内省
    Core Foundation框架(1)基础介绍
    Swift 数组,字典
    Swift 操作符
    Swift 可选值
    Swift 元组
    Swift 变量声明
    iOS开发_UI_AutoLayout
    iOS开发_Objective-C_字符串操作
    iOS开发_Objective-C_监听搜索时用户输入的拼音
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/2952617.html
Copyright © 2011-2022 走看看