1. 文件类型

文件类型信息包含在 struct stat 里的 st_mode 成员

(1)普通文件,unix内核并不区分文本文件和二进制文件
(2)目录文件,这种文件包含了其他文件的名字以及指向这些文件有关信息的指针
(3)块特殊文件
(4)字符特殊文件
(5)FIFO, 常用于进程间通信,也称为管道
(6)套接字socket,常用于进程间网络通信
(7)符号链接 (必须使用lstat函数,获取的是符号链接本身的类型信息,而不是符号链接所指向的文件的类型信息)
 

2.文件长度

stat结构成员st_size 以字节为单位,此字段只对 普通文件、目录文件、符号链接有意义
对于符号链接,st_size 成员表示 该符号链接所指向的文件的文件名长度
 

3.文件系统

 
i节点是固定长度的记录项,包含有关文件的大部分信息
 
(1)每个i节点中都有一个链接计数,其值是指向该i节点的目录项数。只有当链接计数减少至0时,才可以删除该文件
stat结构体中 st_nlink成员表示链接计数。这种类型成为硬链接
 
(2)符号链接:该文件的实际内容包含了该符号链接所指向的文件的名字
符号链接是指向一个文件的间接指针,硬链接直接指向文件的i节点
硬链接有一些限制:
a.硬链接通常要求链接和文件位于同一文件系统中
b.只有超级用户才能创建指向目录的硬链接
符号链接没有这两个限制,任何用户都可以创建符号链接,且没有文件系统限制
 
用open打开文件时,如果传递给open函数的路径名指定了一个符号链接,那么open跟随此链接到达你所链接的文件,如果该文件不存在,那么open出错
open函数跟随符号链接,读取符号链接本身必须使用 readlink函数
 
(3)每个分区的文件系统各自对它们的i节点进行编号,因此不能是一个目录项指向另一个文件系统的i节点,也就是ln命令不能跨越文件系统的原因
 

4.目录操作

opendir
readdir
seekdir
closedir
mkdir
rmdir

APUE 学习笔记(三) 文件和目录的更多相关文章

  1. APUE学习笔记3——文件和目录

    1 简介 之前学习了执行I/O操作的基本函数,主要是围绕普通文件I/O的打开.读或写.下面继续学习Unix文件系统的其他特征和文件的基本性质.我们将从stat函数开始,了解stat结构所代表的文件属性 ...

  2. APUE学习笔记3_文件IO

    APUE学习笔记3_文件IO Unix中的文件IO函数主要包括以下几个:open().read().write().lseek().close()等.这类I/O函数也被称为不带缓冲的I/O,标准I/O ...

  3. Liunx学习笔记(三) 文件权限

    一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...

  4. CentOS学习笔记--基本命令--文件与目录管理

    Linux基本命令--文件与目录管理 本节节选自鸟哥的 Linux 私房菜 -- 基础学习篇目录  第七章.Linux 文件与目录管理  ls(文件与目录的检视) ls命令就是list的缩写,ls可以 ...

  5. linux系统学习笔记:文件、目录、用户

    本篇主要从stat函数开始,逐个说明stat结构的每一个成员,以此来了解文件的所有属性.同时将说明修改这个属性的各个函数. 一.文件 使用stat函数族得到和文件有关的信息结构. #include & ...

  6. FAT文件系统规范v1.03学习笔记---4.文件和目录数据区之长目录项

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  7. 【Linux】Shell学习笔记之四——文件和目录管理(硬连接和软连接)

    在这节将要学习linux的连接档,在之前用"ls -l" 查看文件属性的命令时, 其中第二个属性是连接数.那么这个连接数是干什么的?这就要理解inode. 先说一下文件是怎么存储的 ...

  8. Linux学习笔记05—文件与目录权限

    1. 绝对路径与相对路径绝对路径:路径的写法一定由根目录 ‘/’写起,例如 /usr/local/mysql 这就是绝对路径相对路径:路径的写法不是由根目录 ‘/’写起,例如:首先用户进入到/, 然后 ...

  9. python学习笔记 操作文件和目录

    如果我们要操作文件.目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如dir.cp等命令. 如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操 ...

随机推荐

  1. java基础——冒泡排序

    最近开始准备面试,所以将Java基础复习一遍,又学习了冒泡排序 冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序 ja ...

  2. CentOS7下systemd

    配置文件: /usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/ /run/systemd/system:系统执行过程中所产生的服务脚本, ...

  3. Spring AOP注解形式简单实现

    实现步骤: 1:导入类扫描的注解解析器 命名空间:xmlns:context="http://www.springframework.org/schema/context" xsi ...

  4. Hogan的安装和使用

    Hogan的安装和使用 通过npm安装hogan: npm install hogan.js --save-dev CommonJs下的使用方式: // 引入hogan var hogan = req ...

  5. LeetCode(238) Product of Array Except Self

    题目 Given an array of n integers where n > 1, nums, return an array output such that output[i] is ...

  6. C++中重载、覆盖和隐藏的区别,以及适用场景

    一.重载.覆盖和隐藏的区别 二.适用场景 1.重载: 适用于不同的数据类型都需要使用到的功能函数.以数据相加的函数为例,可以在同一个文件内提供以下的重载函数以支持同样的功能: int add(int, ...

  7. Nordic Collegiate Programming Contest 2015​ E. Entertainment Box

    Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...

  8. debian右键添加在终端中打开

    sudo apt-get install nautilus-open-terminal -y 注销,重启

  9. 线程中更新ui方法汇总

    一.为何写作此文   你是不是经常看到很多书籍中说:不能在子线程中操作ui,不然会报错.你是不是也遇到了如下的疑惑(见下面的代码): @Override protected void onCreate ...

  10. JAVA-基础(四) Aarryas 数组

    1. asList( )方法 返回一个被指定数组支持的List.换句话说,列表和数组访问的是同一个 单元.它具有如下的形式: static List asList(Object[ ] array) 2 ...