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. ThinkPHP3.1快速入门(2)数据CURD

    上一篇中,我们了解了ThinkPHP的基础部分,以及如何创建一个控制器和模板,并知道了M方法的用法,本篇将会讲解下数据的CURD操作,探索下更多的数据操作. CURD CURD是一个数据库技术中的缩写 ...

  2. Unity: How to build and debug external DLLs

    法一:http://forum.unity3d.com/threads/161685-How-to-build-and-debug-external-DLLs http://docs.unity3d. ...

  3. int& a = b 的思考

    在PCL显示点云部分程序中,涉及到了如下程序 // 定义相关变量 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ptr (new pcl::Point ...

  4. String.Format使用方法

    1.作为參数   名称 说明   Format(String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项.   Format(String, ...

  5. Android两个控件叠在一起,如何让被挡住的控件显示出来

    Android两个控件叠在一起,如何让被挡住的控件显示出来 问题 : 两个控件叠在一起,如何让被挡住的控件显示出来? 比如A,B两个控件,A被B挡住,目前A要显示出来,B不能被隐藏,A的高度只有那么一 ...

  6. 在 Android 的 IM 应用中使用 asmack 库实现用户头像的传输(基于VCard协议)

    http://quietmadman.blog.51cto.com/3269500/1359495 Beem http://beem-project.com/projects/beem/reposit ...

  7. IIS8无法调用Oracle.DataAccess .dll问题

    之前在.net平台下操作Oracle都是用的oracle.dataaccell.dll引用,但是服务器升级为II8后,发布的新服务有关Oracle数据库部分都无法运行,调试了好久发现是IIS8不支持低 ...

  8. ACM——3n+1

    3n+1 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:937            测试通过:386 描述 对于任意大于1的自然 ...

  9. MVC小系列(二十二)【MVC的Session超时,导致的跳转问题】

    由于mvc内部跳转机制的问题,它只在当前的action所渲染的view上进行跳转,如果希望在当前页面跳,需要将mvc方法改为js方法: filterContext.Result = new Redir ...

  10. PHPSession-完全PHP5之session篇

    http://blog.csdn.net/masterft/article/details/1640122 1.什么是session?       Session的中文译名叫做“会话”,其本来的含义是 ...