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手册是一份专为中文用户设计的Linux命令参考文档,它包含了Linux系统中各种命令、函数、库和工具的详细说明。这份手册通常以HTML格式提供,方便用户在线浏览或离线阅读,尤其对于那些正在学习或工作中...
Man手册页在Linux世界里扮演着指南针的角色,帮助用户理解和掌握各种命令及其参数的用法。在这个中文版本的手册中,中文用户可以更方便地学习和查阅Linux相关知识,而无需受限于英文阅读能力。 Man手册通常被分为多...
这份“Linux man手册(中文版)”提供了完整的中文翻译,使得国内用户无需面对英文原版的障碍,能更方便地理解和使用Linux系统。中文man手册的专业翻译确保了内容的准确性和完整性,对于学习和日常使用Linux的开发者...
通过《中文man手册》,用户不仅可以了解每个命令的基本用法,还可以看到相关的选项、参数和示例,这对于提升Linux操作技能和解决实际问题大有裨益。尤其对于初学者和需要快速查找解决方案的开发者,这是一份极具价值...
这个压缩包包含Linux的中文和英文man手册,对于理解和掌握Linux操作及命令有着极大的帮助。`man`手册是Linux系统中用于查看命令、函数、系统调用等详细信息的工具,它提供了丰富的文档,包含了各种命令的使用方法、...
《Linux Unix 的man手册》是Linux和Unix系统中不可或缺的编程和系统管理工具。这个chm文件集合了广泛的Linux及Unix编程相关的信息,为开发者提供了详尽的函数用法、解释以及实例,与Windows下的MSDN文档有类似的用途...
Linux中文Man手册是Linux系统管理员和开发者的重要参考资料,它提供了对Linux命令、系统调用、库函数、配置文件等详细而全面的解释。Man(Manual)手册页是Linux和类Unix系统中的一个特色,它以命令行的方式为用户...
Linux中文版man手册是Linux系统开发者和管理员的重要参考资料,它为用户提供了一套详细的命令行工具、系统调用、库函数等的使用指南。在Linux环境中,man(manual的缩写)命令是获取帮助的主要方式,它能帮助用户...
这个“man手册中文版”压缩包文件显然是为那些希望以中文阅读文档的用户设计的,旨在帮助他们更好地理解和使用Linux系统。 Linux的`man`命令是“manual”的缩写,它能够访问系统中的在线帮助文档。通过运行`man`...
LinuxMAN手册是一个针对Linux系统命令的英文速查资源,它为用户提供了一个全面的参考指南,帮助用户快速查找和理解各种Linux命令的用法。在学习和使用Linux操作系统时,掌握这些命令是至关重要的,因为它们构成了与...
Linuxman CHM格式文件是专为Linux学习者和使用者提供的一份详尽的man命令参考手册。CHM(Microsoft Compiled HTML Help)是一种由微软开发的帮助文件格式,它将HTML页面和索引集成在一起,便于用户快速查找和学习...
并且增加很多命令的注释和常用的命令格式,因此可以称作自定义man手册,将其放在/bin目录下,加上执行权限,即可随便查看命令的相关注释,比如sed和awk,记录了大量命令的用法和例子,也可以自己把常用的命令格式...
### 中文 Linux Man 手册:`ac` 命令详解 #### 概述 `ac` 命令是 Linux 和类 Unix 系统中用于报告用户连接时间的一个实用工具。它根据 `/var/log/wtmp` 文件中的登录和登出记录来统计用户的连接时间,并可以提供...
6. **man**: `man` 命令本身是查看Linux命令的手册页,输入`man command`即可获取该命令的详细用法和参数说明。这个PDF可能包含了如何使用`man`来查询其他命令的信息。 7. **emacs**: `emacs` 是一款强大的文本编辑...
总的来说,掌握`man`命令和阅读Linux使用手册是提升Linux技能的关键步骤。通过这些资源,你可以更深入地理解这个开源世界的运作机制,并逐渐成为一名熟练的Linux用户。无论是日常使用还是进行系统管理,Linux提供的...
《man-pages[MAN手册CHM英文版]》是IT领域中一份极其重要的资源,它包含了Linux和类Unix系统中各种命令、系统调用、库函数等的详细文档。这个资源通常以CHM(Microsoft Compiled HTML Help)格式提供,便于用户离线...
除了本地的man page,互联网上也有许多优秀的在线Linux命令手册,如`explainshell.com`和`tldp.org`,它们提供了更直观的交互式学习体验,帮助用户理解命令的各个部分并提供相关示例。 五、提高命令行技能 1. **...
这份名为"linux-c-man.rar_linux man"的压缩包文件提供了一份全面的Linux C函数库参考手册,对于理解和使用Linux系统中的C语言编程具有极大的帮助。 Linux Man页面(Manual pages)是Linux系统中为命令、系统调用、...
总的来说,手册的本章节通过详细地介绍man命令的使用,为用户提供了深入学习和掌握Linux命令行操作的手段。通过对各种命令的手册页面进行查看,用户可以获得必要的帮助信息,从而更好地利用Linux系统强大的命令行...