Linux man 的使用

发布时间 2023-07-26 11:10:57作者: FBshark

前言

man命令 是Linux下的帮助指令,man更为强大的是,不仅可以查看Linux中命令的使用帮助,还可以查看软件服务配置文件、系统调用、库函数等帮助信息。

而man命令也并不是英文单词“man”的意思,它是单词manual的缩写,即使用手册的意思。下面对man手册进行介绍。

man

man手册页文件存放在/usr/share/man目录下。

语法:

man(选项)(参数)

选项

-a 在所有的man帮助手册中搜索
-d 主要用于检查,如果用户加入了一个新的文件,就可以用这个参数检查是否出错
-f 显示给定关键字的简短描述信息
-p 指定内容时使用分页程序
-M 指定man手册搜索的路径
-w 显示文件所在位置
View Code

 

linux中的man 1,2,3 都代表什么

man printf 可以看到有两行输出。一个后面带数字1, 一个后面带数字3,这些数字是什么意思?

1 用户在shell环境可操作的命令或执行文件,如ls
2 系统内核可调用的函数与工具等
3 一些常用的函数(function)与函数库(library),大部分为C的函数库(libc),如printf()
4 设备文件说明,通常在/dev下的文件,如tty
5 配置文件或某些文件格式
6 游戏(games)
7 惯例与协议等,如Linux文件系统,网络协议,ASCII code等说明
8 系统管理员可用的管理命令
9 跟kernel有关的文件,内核例程
View Code

常用的是1,2,3

1,是命令,就是命令行里面输入的命令(上面的 printf(1)可以在 shell 中打印字符串)

2,系统调用,系统的函数,系统版本不同,也许就有区别了

3,库函数,大都是c的库函数,基本所有设备都是支持的.(上面的 printf(3)可以在 C 程序中打印字符串)

 

库函数的底层实现一般是系统调用.

一般情况下,推荐优先使用库函数...

比如:

输出printf()库函数 ,里面调用了write()系统调用

打开fopen()库函数 ,里面调用了open()系统调用

 

 

系统调用和库函数的区别

系统调用通常不可替换,而库函数通常可替换

普通的库函数调用由函数库或用户自己提供,因此库函数是可以替换的。例如,对于存储空间分配函数malloc,如果不习惯它的操作方式,我们完全可以定义自己的malloc函数。

不要误解认为malloc是系统系统,这是错的。因为malloc只是个库函数,内部是使用brk或者sbrk系统调用来实现内部分配。

系统调用运行在内核空间,而库函数运行在用户空间

因为系统调用属于内核,和库函数不属于内核。因此,如果当用户态进程调用一个系统调用时,CPU需要将其切换到内核态,并执行一个内核函数。

传统的方式是引发“int $0x8o”中断。内核捕获中断后,会把运行态从用户态切换到内核态。

一些其他的区别

1、库函数可以很方便的调试;而系统调用很麻烦因为运行在内核。

2、一个库函数执行时间是计算用户层次时间(user level time);但是系统调用的运行时间是作为系统时间来计算的;