前言
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);但是系统调用的运行时间是作为系统时间来计算的;
标签:printf,调用,使用,系统,内核,Linux,man,库函数 From: https://www.cnblogs.com/FBsharl/p/17581921.html