文件和目录详解(一)---stat、lstat和fstat函数详解

记录文件属性的相关数据结构都是存在于内核空间中,在进程的用户空间中是直接访问不到这些数据结构的,只能通过操作系统提供的系统调用来访问。而stat等函数就是操作系统为用户进程提供的用来获取文件属性的系统调用。

=======================================================

函数原型:

函数参数:

  • path:要操作文件的路径名
  • fd:要操作的文件描述符
  • buf:存放读取出来的文件属性

返回值:

  • 调用成功时返回 0
  • 调用失败时返回 -1

========================================================

lstat函数和stat函数作用是类似的,只不过当要读取的文件是符号链接文件时,lstat函数获取的是符号链接文件的属性,而stat函数获取的是符号链接文件指向的实际文件的属性。

结构体struct stat用来存放读取出来的文件属性,其内部的成员如下图所示

=======================================================

文件读写权限和类型是存放在文件的struct inode结构体中的i_mode变量中,mode_t基本数据类型实质上是short类型,占用两个字节一共16位。这16位中的前4位用来表示文件的类型。中间3位表示权限修饰位,后面9位代表所有者、同组用户以及其他用户的权限。

Linux提供了一些特殊的宏给用户进程使用以判断文件的类型,由于Linux中有 7 种类型的文件,所以对应有 7 种判断文件类型的宏。这 7 种宏分别是:

S_ISREG(buf.st_mode)        (普通文件)

S_ISDIR(buf.st_mode)         (目录文件)

S_ISBLK(buf.st_mode)         (块设备文件)

S_ISCHR(buf.st_mode)        (字符设备文件)

S_ISLNK(buf.st_mode)        (符号链接文件)

S_ISFIFO(buf.st_mode)        (有名管道文件)

S_ISSOCK(buf.st_mode)      (套接字文件)

Linux中还提供了两个用来表示set-user-id和set-group-id两位(权限修饰位)的宏,这两位主要会影响到进程的有效用户 ID 和进程实际用户 ID 的。详情参见笔记“与进程有关的ID”。

S_ISUID       (设置了set-user-id位)

S_ISGID       (设置了set-group-id位)

Linux中提供了9个表示所有者、同组用户以及其他用户的权限的宏。

S_IRUSR        (用户读权限)

S_IWUSR        (用户写权限)

S_IXUSR          (用户执行权限)

S_IRGRP          (同组用户读权限)

S_IWGRP         (同组用户写权限)

S_IXGRP        (同组用户执行权限)

S_IROTH        (其他用户读权限)

S_IWOTH        (其他用户写权限)

S_IXOTH        (其他用户执行权限)

时间: 2024-12-25 03:08:38

文件和目录详解(一)---stat、lstat和fstat函数详解的相关文章

进程环境详解(二)---进程终止和 atexit 函数详解

进程终止可以分为 进程正常终止 和 进程异常终止 . 进程正常终止有以下几种情况: 在 main 函数返回 调用 exit 函数 调用 _exit 或者 _Exit 函数 最后一个线程从启动代码中返回 最后一个线程调用 pthread_exit 进程异常终止有以下几种情况: 调用 abort函数 进程收到信号终止 最后一个线程对取消请求作出响应 ======================================================== exit 函数 和 _exit / _

C++多态篇2——虚函数表详解之从内存布局看函数重载,函数覆盖,函数隐藏

上一篇C++多态篇1一静态联编,动态联编.虚函数与虚函数表vtable中,我在最后分析了虚函数与虚函数表的内存布局,在下一篇详细剖析虚函数及虚函数表的过程中,我发现有关函数重载,函数覆盖,函数重写和函数协变的知识也要理解清楚才能对虚函数表在内存中的布局,对派生类的对象模型以及对多态的实现有更深的理解. 所以这一篇我作为一篇过渡篇,也同时对我以前写过的一篇博文进行一个收尾.在C++继承详解之二--派生类成员函数详解(函数隐藏.构造函数与兼容覆盖规则)文章中,我对函数覆盖,重载,重写提了一下,但是没

Linux文件或目录权限详解

版权声明: ########################################################################### 本文的所有内容均来自作者刘春凯的学习总结,未经本人许可,禁止私自转发及使用. QQ:1151887353 E-mail:[email protected] [email protected] ########################################################################

Linux文件权限详解 文件和目录权限概述

Linux文件权限详解 文件和目录权限概述 在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问:允许一个预先指定的用户组中的用户访问:允许系统中的任何用户访问.同时,用户能够控制一个给定的文件或目录的访问程度.一个文件活目录可能有读.写及执行权限.当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件.文件所有者可以将这些权限改变

perl readdir函数详解 获取目录下文件

perl readdir函数详解 2013年12月30日  Perl基础  共 763字 字号 小 中 大  暂无评论  阅读 4,384 次 readdir函数从一个用 opendir 打开的目录句柄读取目录记录也就是文件名.用法如下: readdir DIRHANDLE 在标量环境中,readdir函数返回下一个目录记录,否则,它返回undef.在列表环境中,它返回在该目录中所有剩下的记录,如果剩下没有记录了,那么这个返回可能是一个空列表.比如: opendir(THISDIR, ".&qu

Linux命令详解--文件与目录查找

一·文件搜索 which:用来查找命令的绝对路径-- 显示shell命令的绝对路径-- 仅仅会在PATH变量中搜索要查找的命令-- 搜索时先查找别名,然后从PATH中查找1.查看用户的PATH变量:命令的搜索路径# echo $PATH/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin command not found可能原因:1)敲错了2)命令没有安装3)命令

【Linux命令详解】2、文件和目录操作管理

2.文件和目录操作管理 本节主要学习在Linux下如何使用命令对文件和目录进行操作,这些命令pwd.cd.ls等. 2.1 pwd:显示工作目录路径 使用pwd命令可以显示当前用户所处的工作目录的绝对路径. 2.1.1命令语法: pwd[选项] 2.1.2参数选项: 选项 选项含义 -L 目录链接时,输出链接路径 -P 输出物理路径 2.1.3实例: 例1:显示用户当前工作目录路径. [[email protected] ~]# pwd /root //用户当前的工作路径是root 例2:显示用

文件和目录权限详解

ls -l 列出当前目录下所有内容的详细信息 第一列第1位表示文件类型: d 目录文件 c 字符设备文件 b 块设备文件 l 软连接文件 s 套接字文件,只能在本地,不能跨网 - 普通文件 p 管道文件,将一些命令的输出作为另一些命令的输入 第一列第2-10位表示权限 234 属主的读.写.执行权限 567 属组的读.写.执行权限 8910 其他人的读.写.执行权限 r 读权限 w 写权限 x 执行权限 - 没有权限 第一列第11位的点 "." 表示跟SELINUX防火墙有关的标记位

Linux文件和目录权限详解

一.Linux文件和目录权限管理 1.文件权限说明: (1)r:表示具有读取文件内容的权限: (2)w:表示具有新增,修改文件内容的权限: (3)x:表示具有执行文件的权限,同时需要有r权限: 2.目录权限说明: (1)r:表示具有浏览目录下有哪些文件的权限,必须同时用x权限才可以: (2)w:表示具有新增.删除.移动目录内容文件的权限,同时需要有x权限: (3)x:表示具有进入目录的权限: 3.权限获取顺序 先看用户是不是文件所有者,再看是不是所属组,最后看是不是其他用户,如果是其中一个,就有