man手册
主要分为以下几个章节:
User Commands(用户命令):这一章节包含了普通用户(非root用户)可以执行的命令。这些命令通常用于日常的文件管理、文本编辑、程序执行等任务。
System Calls(系统调用):此章节描述了内核提供的服务接口,即操作系统提供的所有系统调用。系统调用是操作系统提供给用户程序调用的一组“特殊”接口,用户程序通过这组“特殊”接口可以获得操作系统内核的服务。例如,open、write等都属于系统调用。
C Library Functions(C函数库调用):这一章节主要介绍了C语言标准库中的函数,这些函数是C语言编程中常用的库函数,如printf、fread等。它们提供了对输入输出、字符串处理、数学计算等功能的支持。
Devices and Special Files(设备文件和特殊文件):此章节描述了Linux中的设备文件和特殊文件。设备文件通常位于/dev目录下,用于表示硬件设备或特殊设备。特殊文件则具有特殊的行为或用途,如管道(pipe)和套接字(socket)。
File Formats and Conventions(配置文件及格式):这一章节介绍了Linux中各种配置文件的格式和约定。这些配置文件通常用于存储系统设置、用户配置等信息,如passwd文件用于存储用户密码信息。
Games and Toys(游戏和娱乐):此章节包含了一些与游戏和娱乐相关的命令或程序。这些命令或程序通常不是系统管理的核心部分,但可以为用户提供娱乐或休闲的功能。
Miscellanea(杂项):这一章节包含了一些不属于上述任何分类的命令、程序或信息。这些内容可能涵盖了各种主题,但通常与Linux系统的核心功能关系不大。
System Administration tools and Deamons(管理类命令):此章节描述了系统管理员用于管理系统的命令和工具。这些命令通常只能由root用户执行,用于执行系统维护、配置管理、性能监控等任务。
需要注意的是,不同版本的Linux发行版可能会在自己的man手册中新增一些内容或调整章节的划分。因此,在实际使用中,最好参考具体Linux发行版的官方文档或手册来获取最准确的信息。
此外,man手册的章节号在命令的man页面中会有显示,通常位于页面顶部的标题中。例如,
man ls
命令的man页面顶部标题可能为“LS(1)”,其中“(1)”表示该命令位于User Commands章节。通过指定章节号来查询man手册中的命令或程序也是一种常用的方法,如man 2 open
可以查询open系统调用的man页面。
Linux文件七种类型
在Linux系统中,文件被分为七种类型,每种类型都有其特定的用途和英文缩写。以下是这七种文件类型及其英文缩写的详细介绍:
- 普通文件(Regular Files)
- 英文缩写:无特定缩写,但通常用"-"表示(在文件属性列表中)。
- 描述:这是最常见的文件类型,用于存储普通数据,如文本文件、二进制文件、图像、视频等。
- 目录文件(Directory)
- 英文缩写:d
- 描述:目录是包含其他文件或目录的文件,用于组织文件系统的结构。
- 字符设备文件(Character Device Files)
- 英文缩写:c
- 描述:字符设备文件是访问字符设备的接口,如键盘、鼠标等。这些设备以字符流的形式进行数据传输。
- 块设备文件(Block Device Files)
- 英文缩写:b
- 描述:块设备文件是访问块设备的接口,如硬盘、光盘等。这些设备以数据块的形式进行数据传输,通常用于存储大量数据。
- 符号链接文件(Symbolic Link Files)
- 英文缩写:l(在文件属性列表中)
- 描述:符号链接文件是指向另一个文件的引用,类似于Windows中的快捷方式。通过符号链接,可以间接访问目标文件。
- 套接字文件(Socket Files)
- 英文缩写:s
- 描述:套接字文件用于网络间通信,它允许不同计算机上的应用程序之间进行数据交换。在Linux中,套接字也被视为一种特殊类型的文件。
- 管道文件(Pipe Files)
- 英文缩写:p(在文件属性列表中)
- 描述:管道文件是一种用于进程间通信的特殊文件,它允许一个进程的输出直接作为另一个进程的输入。管道文件在命令行操作中非常常见,如使用管道符“|”。
请注意,虽然普通文件在文件属性列表中通常用"-"表示,但它并没有特定的英文缩写来代表其类型。而其他六种文件类型则各有其特定的英文缩写,用于在文件属性列表中标识其类型。
此外,还有一种类型的文件在Linux中非常特殊,即特殊文件(Special Files),但这类文件并不属于上述七种之一。特殊文件通常用于特殊目的,如
/dev/null
,它是一个特殊的设备文件,所有写入它的数据都会被丢弃。这类文件在Linux系统中扮演着重要的角色,但它们的数量相对较少,且用途特定。
OPEN函数
在C语言中,
open
函数用于打开或创建一个文件,并返回一个文件描述符(file descriptor)。这个文件描述符是一个非负整数,用于后续的读、写、定位等操作。文件描述符是系统用来标识和管理文件的一个索引。关于为什么文件描述符通常从3开始(或者看起来像是从3开始),这实际上与UNIX和类UNIX系统(如Linux)的底层设计和标准输入输出(stdin, stdout, stderr)的处理方式有关。
在UNIX和类UNIX系统中,文件描述符0、1、2被系统保留用于标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)。这些特殊的文件描述符是程序在启动时自动打开的,无需程序员显式调用
open
函数。
- 文件描述符0(stdin):标准输入,通常是键盘。
- 文件描述符1(stdout):标准输出,通常是屏幕。
- 文件描述符2(stderr):标准错误输出,也是屏幕,但用于错误消息的输出,与stdout分开处理以便于重定向。
因此,当你使用
open
函数打开文件时,返回的文件描述符会从最小的未使用的非负整数开始。由于0、1、2已经被系统预留用于上述特殊用途,所以open
函数返回的文件描述符通常从3开始。当然,如果程序之前通过其他方式(如多次调用open
)打开了其他文件,并关闭了其中的一些(使用close
函数),那么新打开的文件可能会获得这些被关闭的文件描述符中的某一个。这种设计允许程序员在程序中灵活地处理多个文件输入和输出,同时保留对标准输入输出的访问。