Linux高级系统编程
教学设计
课程名称: Linux高级系统编程_______________
授课年级: ___________________________
授课学期: ___________________________
教师姓名: ___________________________
2019年03月01日
课程名称
第1章 文件与目录
计划学时
4学时
内容分析
本章主要介绍文件属性、目录操作、文件系统
教学目标
与
教学要求
要求学生了解Linux系统中文件的类型、文件的属性信息的方法掌握获取、掌握文件的存取与目录的操作方法、掌握文件系统的概念
教学重点
目录操作、文件系统
教学难点
目录操作、文件系统
教学方式
课堂讲解及ppt演示
教
学
过
程
第一课时
(文件属性)
内容回顾
回顾上节内容,引出本课时主题。
在开篇的第1章里,本书将介绍Linux系统中应用最为广泛的知识:文件的属性特点与文件目录的操作,以及文件系统的概念。对于Linux操作系统而言,一切皆文件,由此可见文件是Linux操作系统的重要组成部分。本章内容有助于对后续章节的理解与应用。从而引出本节的内容。
明确学习目标
能够掌握文件的类型
能够掌握符号链接文件
能够掌握stat()函数、fstat()函数和lstat()函数
能够掌握文件属主
能够掌握文件的存取许可权
能够掌握chmod()函数和fchmod()函数
知识讲解
文件的类型
了解文件首先需要了解Linux系统中文件的类型,以及它们各自的特点。Linux系统中的大多数文件是普通文件或目录,但是也有另外一些文件类型。
(1)普通文件(regular file)。这种文件是最常见的文件类型,其数据形式可以是文本或二进制数据。
(2)目录文件(directory file)。这种文件包含其他类型文件的名字以及指向与这些文件有关的信息的指针。对一个目录文件具有读许可权的任一进程都可以读该目录文件的内容,但只有内核才有写目录文件的权限。
(3)字符设备文件(character special file)。这种文件被视为对字符设备的一种抽象,它代表的是应用程序对硬件设备的访问接口,Linux应用程序通过对该文件进行操作来实现对设备的访问。
(4)块设备文件(block special file)。这种文件类似于字符设备文件,只是它用于磁盘设备。Linux系统中的所有设备或者抽象为字符设备文件,或者为块设备文件。
(5)管道文件(pipe)。这种文件用于进程间的通信,有时也将其称为命名管道。本书第5章将对其进行详细说明。
(6)套接字文件(socket)。这种文件用于进程间的网络通信。也可用于在一台宿主机上的进程之间的本地通信。本书从第7章开始对其进行详细说明。
(7)符号连接(symbolic link)。这种文件指向另一个文件。
通常情况下,文件的类型用一个字符表示,文件类型的字符如下表所示。
字符类型
说明
b
块设备文件
c
字符设备文件
d
目录
-
普通文件
l
链接文件
s
套接字文件
p
管道文件
文件类型的宏观定义如表所示。
常量
测试宏
文件类型
S_IFREG
S_ISREG()
普通文件
S_IFDIR
S_ISDIR()
目录文件
S_IFCHR
S_ISCHR()
字符设备文件
S_IFBLK
S_ISBLK()
块设备文件
S_IFIFO
S_ISFIFO()
管道
S_IFLNK
S_ISLNK()
链接文件(符号链接)
S_IFSOCK
S_ISSOCK()
套接字
符号链接文件
上一节中介绍的7种文件类型,字符设备与块设备文件一般在讨论底层驱动时会使用到,这里不再描述。套接字文件常用于实现进程间的网络通信,后续在讨论网络通信时,将着重介绍。本节单独介绍符号链接文件的特点。
符号链接文件类似于Windows系统的快捷方式,只保留目标文件的地址,而不用占用存储空间。使用链接文件和使用目标文件的效果是一样的。符号链接文件指定不同的访问权限,以控制对文件的共享和保证安全性。
Linux中有两种类型的链接:硬链接和软链接。
硬链接是利用Linux系统中为每个文件分配的物理编号i节点建立链接(关于i节点,详见1.1.10节)。因此,硬链接不能跨越文件系统。硬链接的文件属性基本与源文件是基本一致的,可以进行同步更新。这种方式类似于Windows系统中将文件复制一份。
软链接是利用文件的路径名建立链接。通常建立软链接使用绝对路径而不是相对路径,以最大限度保证可移植性。软链接更像是Windows中创建快捷方式。软链接权限不会改变源文件(目标文件)的权限。
硬链接和软链接的不同之处在于,源文件删除后,软链接无法定位到源文件,所以会显示没有文件;