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

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

唯一不同是参数不同,其他一样。

文件的一些属性参数:

struct stat{

  dev_t st_dev; /* ID of device containing file */
  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 */  文件的UID
  gid_t st_gid; /* group ID of owner */文件的GID
  dev_t st_rdev; /* device ID (if special file) */设备ID(如果特殊的文件)
  off_t st_size; /* total size, in bytes */文件大小
  blksize_t st_blksize; /* blocksize for filesystem I/O */
  blkcnt_t st_blocks; /* number of 512B blocks allocated */
  time_t st_atime; /* time of last access */ 文件的三个时间atime mtime atime
  time_t st_mtime; /* time of last modification */
  time_t st_ctime; /* time of last status change */
};

 通过下面的一些宏函数定义可以判断文件类型:

The following POSIX macros are defined to check the file type using the st_mode field:

下面的POSIX宏定义使用st_mode字段检查文件类型:

如果如下宏返回真就说明是所指文件

if( S_ISREG(st_mode) )

{

说明是普通文件

}

S_ISREG(m) is it a regular file? 普通文件

S_ISDIR(m) directory?目录

S_ISCHR(m) character device? 字符设备

S_ISBLK(m) block device?块设备

S_ISFIFO(m) FIFO (named pipe)? 管道

S_ISLNK(m) symbolic link? (Not in POSIX.1-1996.) 符号链接

S_ISSOCK(m) socket? (Not in POSIX.1-1996.)套接字

例子:

int main(int argc , char* argv[])
{
  struct stat fileinfo;
  int fd;
  if(argc > 2 ) return 0;

  fd = open(argv[1] , O_RDONLY);

  if(fd == -1)
  {
    printf("%s\n" , strerror(errno));
  }
  else
  {
    fstat(fd , &fileinfo);//获取文件属性 //stat只需要改下参数即可

    if( S_ISREG(fileinfo.st_mode) )
    {
      printf("普通文件\n");
    }
  }
  close(fd);

  return 0;

}

fstat().stat()函数的更多相关文章

  1. linux下实现ls()函数遍历目录

    转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600794.html 需求:在linux下遍历目录,输出目录中各文件名. 在linux下遍历目录的相关函数有 ...

  2. [C++]linux下实现ls()函数遍历目录

    转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600794.html 需求:在linux下遍历目录,输出目录中各文件名. 在linux下遍历目录的相关函数有 ...

  3. ext2文件系统

    2.1. 总体存储布局 我们知道,一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的 ...

  4. Linux系统编程(6)——文件系统

    计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数 ...

  5. inode表元数据,存储在物理存储体上

    一个文件除了数据需要存储之外,一些描述信息也需要存储,例如文件类型(常规.目录.符号链接等),权限,文件大小,创建/修改/访问时间等,也就是ls -l命令看到的那些信息,这些信息存在inode中而不是 ...

  6. Node.js:文件系统

    ylbtech-Node.js:文件系统 1.返回顶部 1. Node.js 文件系统 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API. Node 导入文件系统模块(fs)语 ...

  7. 33.Node.js 文件系统fs

    转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API. Node ...

  8. Node.js Learning Notes

    简介 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务 ...

  9. C语言:stat,fstat和lstat函数

    这三个函数的功能是一致的,都用于获取文件相关信息,但应用于不同的文件对象.对于函数中给出pathname参数,stat函数返回与此命名文件有关的信息结构,fstat函数获取已在描述符fields上打开 ...

随机推荐

  1. [置顶] 程序员必知(三):一分钟知道URI编码(encodeURI)

    因为浏览器会用一些特殊的字符作为特定的意义,所以在要传输的内容上如果有这些特殊的字符的话,就需要对其进行转义才能正确传输,如以下字符为发送时候的关键字,即特殊字符 ;/?:@&=+$,# 所以 ...

  2. innobackupex自动备份脚本(增量备份,自动压缩)

    #!/bin/bash #日期转为天数 function date2days { echo "$*" | awk '{ z=-$)/); y=$+-z; m=$+*z-; j=*m ...

  3. MS-SQLSERVER中的MSDTC不可用解决方法

    今天在本地机直接在触发器里更新还有一台服务器数据时出现: MSDTC不可用  解决的方法:  在windows控制面版-->管理工具-->服务-->Distributed   Tra ...

  4. spring mvc[转]

    Spring 注解学习手札(一) 构建简单Web应用 Spring 注解学习手札(二) 控制层梳理 Spring 注解学习手札(三) 表单页面处理 Spring 注解学习手札(四) 持久层浅析 Spr ...

  5. perl 线程创健

    http://www.cnblogs.com/zhangchaoyang/articles/2057178.html

  6. JS中checkbox组件的使用

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  7. iOS之应用程序国际化

    一.程序国际化 准备工作: 1.首先我们要先创建一个工程,我们给他命名Internationalization-Demo,然后添加语言. 从代码中分离文本: 目前,应用展示的所有文本都是以硬编码字符串 ...

  8. android activity启动的4种方式记录及打开其他应用的activity的坑

    Android启动的四种方式分别为standard,singleTop,singleTask,singleInstence. standard是最常见的activity启动方式,也是默认的启动的方式. ...

  9. 一行 Python 代码搞定一棵树

    使用 Python 内建的 defaultdict 方法可以轻松定义一个树的数据结构. 简单的说树也可以是一个字典数据结构           Python   1 def tree(): retur ...

  10. linux下grep命令笔记

    grep    -i 不区分大小写    --color 添加颜色        alias grep=‘grep --color=auto’    -v 显示没有被模式匹配到的行    -o 只显示 ...