linux man手册各个章节的意义

注:本文转载于网络

Linux的man很强大,该手册分成很多section,使用man时可以指定不同的section来浏览,各个section意义如下:
1 - commands
2 - system calls
3 - library calls
4 - special files
5 - file formats and convertions
6 - games for linux
7 - macro packages and conventions
8 - system management commands
9 - 其他
解释一下,
1是普通的命令
2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3是库函数,如printf,fread
4是特殊文件,也就是/dev下的各种设备文件
5是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6是给游戏留的,由各个游戏自己定义
7是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8是系统管理用的命令,这些命令只能由root使用,如ifconfig
想要指定section就直接在man的后面加上数字,比如 :
man 1 ls
man 3 printf
等等
对于像open,kill这种既有命令,又有系统调用的来说,man open则显示的是open(1),也就是从最前面的section开始,如果想查看open系统调用的话,就得man 2 open

关于库函数和系统调用

库函数是高层的,完全运行在用户空间, 为程序员提供调用真正的在幕后完成实际事务的系统调用的更方便的接口。系统调用在内核态运行并且由内核自己提供。标准C库函数printf()

可以被看做是一个通用的输出语句,但它实际做的是将数据转化为符合格式的字符串并且调用系统调用 write()

输出这些字符串。

是否想看一看printf()

究竟使用了哪些系统调用? 这很容易,编译下面的代码。

#i nclude <stdio.h>
int main(void)
{ printf("hello"); return 0; }

使用命令gcc -Wall -o hello hello.c 编译。用命令 strace hello 跟踪该可执行文件。是否很惊讶? 每一行都和一个系统调用相对应。 strace是一个非常有用的程序,它可以告诉你程序使用了哪些系统调用和这些系统调用的参数,返回值。 这是一个极有价值的查看程序在干什么的工具。在输出的末尾,你应该看到这样类似的一行 write(1, "hello", 5hello) 。这就是我们要找的。藏在面具printf() 的真实面目。既然绝大多数人使用库函数来对文件I/O进行操作(像 fopen, fputs, fclose)。 你可以查看man说明的第二部分使用命令man 2 write 。man说明的第二部分专门介绍系统调用(像kill() read() )。 man说明的第三部分则专门介绍你可能更熟悉的库函数(像cosh() random() )。

你甚至可以编写代码去覆盖系统调用,正如我们不久要做的。骇客常这样做来为系统安装后门或木马。 但你可以用它来完成一些更有益的事,像让内核在每次某人删除文件时输出 “ Tee hee, that tickles! ” 的信息。

自己总结:

从程序完成的功能来看,函数库提供的函数通常是不需要操作系统的服务,函数是在用户空间内执行的,除非函数涉及到I/O操作等,一般是不会切到核心态的。系统调用 是要求操作系统为用户提供进程,提供某种服务,通常是涉及系统的硬件资源和一些敏感的软件资源等。

函数库的函数,尤其与输入输出相关的函数,大多必须通过Linux的系统调用来完成。因此我们可以将函数库的函数当成应用程序设计人员与系统调用程序之间

一个中间层,通过这个中间层,我们可以用一致的接口来安全的调用系统调用。这样程序员可以只要写一次代码就能够在不同版本的linux系统间使用积压种具
体实现完全不同的系统调用。至于如何实现对不同的系统调用的兼容性问题,那是函数库开发者所关心的问题。

从程序执行效率来看,系统调用的执行效率大多要比函数高,尤其是处理输入输出的函数。当处理的数据量比较小时,函数库的函数执行效率可能比较好,因为函数
库的作法是将要处理的数据先存入
缓冲区内,等到缓冲区装满了,再将数据一次写入或者读出。这种方式处理小量数据时效率比较高,但是在进行系统调用时,因为用户进程从用户模式进入系统核心
模式,中间涉及了许多额外的任务的切换工作,这些操作称为上下文切换,此类的额外工作会影响系统的执行效率。但是当要处理的数据量比较大时,例如当输入输
出的数据量超过文件系统定义的尽寸时,利用系统调用可获得较高的效率。

从程序的可移植性的角度来看,相对于系统调用,C语言的标准备函数库(ANSI C) 具备较高的可移植性,在不同的系统环境下,只要做很少的修改,通常情况是不需要修改的。

linux man手册各个章节的意义

时间: 2024-10-04 19:10:18

linux man手册各个章节的意义的相关文章

超级方便的linux命令手册

超级方便的linux命令手册 NO 分类 PS1 命令名 用法及参数 功能注解 对应章节 1 文件管理 # ls ls -a 列出当前目录下的所有文件,包括以.头的隐含文件     文件管理 # ls ls -l或ll 列出当前目录下文件的详细信息     文件管理 # pwd pwd 查看当前所在目录的绝对路经     文件管理 # cd cd .. 回当前目录的上一级目录     文件管理 # cd cd - 回上一次所在的目录     文件管理 # cd cd ~ 或 cd 回当前用户的宿

linux下各种颜色文件的意义

linux下的文件颜色的意义 蓝色表示目录;绿色表示可执行文件;红色表示压缩文件;浅蓝色表示链接文件;灰色表示其它文件;红色闪烁表示链接的文件有问题了;黄色是设备文件,包括block, char, fifo.用dircolors -p看到缺省的颜色设置,包括各种颜色和"粗体",下划线,闪烁等定义.如果需要改变系统默认的这个颜色,可以用下面的方法:# vi /etc/DIR_COLORS然后在文件里面,找到自己想要修改的项,如要改目录颜色的话,可以把DIR 01:34改成"DI

Linux/Unix系统编程手册--SOCKET章节读书笔记

SOCKET章节读书笔记 强烈推荐Linux/Unix系统编程手册,号称超越APUE的神书. backlog含义 #include <sys/socket.h> int listen(int socketfd, int backlog) backlog参数限制未决连接(未accept)的数量,在这个数量之内,connect会立刻成功. Linux上上限为128,定义在 udp已连接socket udp socket也是可以调用connect()的,这种叫已连接socket,内核会记录这个soc

linux命令手册

linux命令非为内置命令和外部命令 内置命令是shell程序的一部分 外部命令是系统的软件功能,执行过程由shell程序控制 区别内置命令和外部命令:type 内置命令显示为 is a shell builtin: 外部命令显示为路径 获得命令的使用帮助: 内部命令:help COMMAND 外部命令:COMMAND --help 命令手册:manual man COMMAND 查看命令使用手册 man(数字):表示显示第几章节的内容:不跟数字:显示第一次出现的章节 显示出现乱码时,说明字符集

Linux帮助手册

如何使用帮助手册  1.如果需要改用户密码可以使用.        whatis  使用方法           格式: [[email protected] ~]# whatis rm            rm                   (1p)  - remove directory entries            rm                   (1)  - remove files or directories            有时会出现这种情况    

Linux初学者学习命令有什么意义

对于参加Linux的初学者来说,Linux命令的学习没有那么简单,很多初学者很少使用命令或不知道如何使用命令,其实Linux命令是很重要的,下面小编就给大家详细介绍下Linux命令. 有朋友用了很长时间的Linux图形界面,基本不使用命令行输入命令执行,所以装的Linux最终成了摆设.这里总结一些命令行下常使用的命令,希望能有用. 什么是命令 我们通常所说的Linux命令行是运行在终端(terminal)的shell (阅读Linux架构以了解什么是shell以及它在Linux系统中的位置) 所

Linux使用手册

vi使用手册 VI是unix上最常用的文本编辑工具,作为unix软件测试人员,有必要熟练掌握它. 进入vi的命令vi filename :打开或新建文件,并将光标置于第一行首vi +n filename :打开文件,并将光标置于第n行首vi + filename :打开文件,并将光标置于最后一行首vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filenamevi filena

生产环境FTP(linux搭建手册)

linux配置生产环境FTP anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YES xferlog_std_format=YESchroot_list_enable=Y

linux系统级别及特殊字符的意义

运行级别: 0是关机 1是单用户模式 2是没有NFS的多用户模式 3是多用户模式,命令行模式 4是未使用的 5是图形桌面 6是重启 特殊字符含义: ~是家目录/root -用户上一次所在的路径 .   一个点号是当前目录其他功能,正则,任意单个字符. ..  当前目录的上级目录 |   管道 >输出重定向>>追加输出重定向 <输入重定向<<追加输入重定向 1)!+字母表示调出最近一次此字母开头的命令. 2) !! 表示使用最近一次操作的命令. 3)!+数字表示调出历史的