linux常用头文件详解

上传人:206****923 文档编号:37522815 上传时间:2018-04-17 格式:DOC 页数:13 大小:251.50KB
返回 下载 相关 举报
linux常用头文件详解_第1页
第1页 / 共13页
linux常用头文件详解_第2页
第2页 / 共13页
linux常用头文件详解_第3页
第3页 / 共13页
linux常用头文件详解_第4页
第4页 / 共13页
linux常用头文件详解_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《linux常用头文件详解》由会员分享,可在线阅读,更多相关《linux常用头文件详解(13页珍藏版)》请在金锄头文库上搜索。

1、linux 常用头文件详解常用头文件详解POSIX 标准定义的头文件目录项文件控制文件名匹配类型路径名模式匹配类型组文件网络数据库操作口令文件正则表达式TAR 归档值终端 I/O符号常量,文件是 Linux 的系统调用,好比 Windows 中的 windows.h文件时间字符扩展类型-INTERNET 定义套接字本地接口INTERNET 地址族传输控制协议定义- 内存管理声明Select 函数套接字借口文件状态进程时间基本系统数据类型(如 pid_t,size_t 等)UNIX 域套接字定义系统名进程控制-POSIX 定义的 XSI 扩展头文件cpio 归档值 动态链接消息显示结构文件树漫游

2、代码集转换使用程序语言信息常量模式匹配函数定义货币类型数据库操作消息类别轮询函数搜索表字符串操作系统出错日志记录用户上下文用户限制用户帐户数据库 -IPC(命名管道)消息队列资源操作信号量共享存储文件系统信息时间类型附加的日期和时间定义矢量 I/O 操作-POSIX 定义的可选头文件异步 I/O消息队列线程执行调度信号量实时 spawn 接口XSI STREAMS 接口事件跟踪 C/C+头文件一览Cinclude /设定插入点include /字符处理include /定义错误码include /浮点数处理include /对应各种运算符的宏include /定义各种数据类型最值的常量incl

3、ude /定义本地化 C 函数include /定义数学函数include /异常处理支持include /信号机制支持include /不定参数列表支持include /常用常量include /定义输入输出函数include /定义杂项函数及内存分配函数include /字符串处理include /定义关于时间的函数include /宽字符处理及输入输出include /宽字符分类传统 C+include /改用include /改用include /改用include /该类不再支持,改用中的 stringstream标准 C+ include /STL 通用算法include /STL

4、 位集容器include /字符处理include /定义错误码include /浮点数处理include /对应各种运算符的宏include /定义各种数据类型最值的常量include /定义本地化函数include /定义数学函数include /复数类include /信号机制支持include /异常处理支持include /不定参数列表支持include /常用常量include /定义输入输出函数include /定义杂项函数及内存分配函数include /字符串处理include /定义关于时间的函数include /宽字符处理及输入输出include /宽字符分类include

5、 /STL 双端队列容器include /异常处理类include /文件输入输出include /STL 定义运算函数(代替运算符)include /定义各种数据类型最值常量include /STL 线性列表容器include /本地化特定信息include /STL 映射容器include /STL 通过分配器进行的内存分配include /动态内存分配include /STL 常用的数字操作include /参数化输入输出include /基本输入输出支持include /输入输出系统使用的前置声明include /数据流输入输出include /基本输入流include /STL 迭代

6、器include /基本输出流include /STL 队列容器include /STL 集合容器include /基于字符串的流include /STL 堆栈容器include /标准异常类include /底层输入输出支持include /字符串类include /运行期间类型信息include /STL 通用模板类include /对包含值的数组的操作include /STL 动态数组容器C99 增加的部分include /复数处理include /浮点环境include /整数格式转换include /布尔环境include /整型环境include /通用类型数学宏而对于本书所描述的

7、内核源代码,其中涉及的头文件则可以看作是对内核及其函数库 所提供服务的一个概要说明,是内核及其相关程序专用的头文件。在这些头文件中主要描 述了内核所用到的所有数据结构、初始化数据、常数和宏定义,也包括少量的程序代码。 除了几个专用的头文件以外(例如块设备头文件 blk.h),Linux 0.12 内核中所用到的头文件 都放在内核代码树的 include/目录中。因此编译 Linux 0.12 内核无需使用开发环境提供的 位于/usr/include/目录下的任何头文件。当然,tools/build.c 程序除外。因为这个程序虽然 被包含在内核源代码树中,但它只是一个用于组合创建内核映像文件的工

8、具程序或应用程 序,不会被链接到内核代码中。从 0.95 版开始,内核代码树中的头文件需要复制到/usr/include/linux 目录下才能顺利 地编译内核。即从该版内核开始头文件已经与开发环境使用的头文件合二为一。14.1 include/目录下的文件内核所用到的头文件都保存在 include/目录下。该目录下的文件如表 11-1 所示。这里 需要说明一点:为了方便使用和兼容性,Linus 在编制内核程序头文件时所使用的命名方 式与标准 C 库头文件的命名方式相似,许多头文件的名称甚至其中的一些内容都与标准 C 库的头文件基本相同,但这些内核头文件仍然是内核源代码或与内核有紧密联系的程序

9、专 用的。在一个 Linux 系统中,它们与标准库的头文件并存。通常的做法是将这些头文件放 置在标准库头文件目录中的子目录下,以让需要用到内核数据结构或常数的程序使用。另外,也由于版权问题,Linus 试图重新编制一些头文件以取代具有版权限制的标准 C 库的头文件。因此这些内核源代码中的头文件与开发环境中的头文件有一些重叠的地方。 在 Linux 系统中,列表 14-1 中的 asm/、linux/和 sys/三个子目录下的内核头文件通常需要 复制到标准 C 库头文件所在的目录(/usr/include)中,而其他一些文件若与标准库的头文件 没有冲突则可以直接放到标准库头文件目录下,或者改放到

10、这里的三个子目录中。asm/目录下主要用于存放与计算机体系结构密切相关的函数声明或数据结构的头文件。 例如 Intel CPU 端口 IO 汇编宏文件 io.h、中断描述符设置汇编宏头文件 system.h 等。 linux/目录下是 Linux 内核程序使用的一些头文件。其中包括调度程序使用的头文件 sched.h、内存管理头文件 mm.h 和终端管理数据结构文件 tty.h 等。而 sys/目录下存放着 几个与内核资源相关头文件。不过从 0.98 版开始,内核目录树下 sys/目录中的头文件被全 部移到了 linux/目录下。Linux 0.12 版内核中共有 32 个头文件(*.h),其

11、中 asm/子目录中含有 4 个,linux/子目 录中含有 10 个,sys/子目录中含有 5 个。从下一节开始我们首先描述 include/目录下的 13 个头文件,然后依次说明每个子目录中的文件。说明顺序按照文件名称排序进行。14.2 a.out.h 文件14.2.1 功能描述在 Linux 内核中,a.out.h 文件用于定义被加载的可执行文件结构。主要用于加载程 序 fs/exec.c 中。该文件不属于标准 C 库,它是内核专用的头文件。但由于与标准库的头 文件名没有冲突,因此在 Linux 系统中一般可以放/usr/include/目录下,以供涉及相关内容 的程序使用。该头文件中定

12、义了目标文件的一种 a.out(Assembly out)格式。Linux 0.12 系 统中使用的.o 文件和可执行文件就采用了这种目标文件格式。a.out.h 文件包括三个数据结构定义和一些相关的宏定义,因此文件可被相应地分成 三个部分:第 1108 行给出并描述了目标文件执行头结构和相关的宏定义。第 109185 行对符号表项结构的定义和说明。第 186217 行对重定位表项结构进行定义和说明。由于该文件内容比较多,因此对其中三个数据结构以及相关宏定义的详细说明放在程 序列表后。从 0.96 版内核开始,Linux 系统直接采用了 GNU 的同名头文件 a.out.h。因此造成在 Lin

13、ux 0.9x 下编译的程序不能在 Linux 0.1x 系统上运行。下面对两个 a.out 头文件的不同 之处进行分析,并说明如何让 0.9x 下编译的一些不是用动态链接库的执行文件也能在 0.1x 下运行。Linux 0.12 使用的 a.out.h 文件与 GNU 同名文件的主要区别在于 exec 结构的第一个 字段 a_magic。GNU 的该文件字段名称是 a_info,并且把该字段又分成 3 个子域:标志域 (Flags)、机器类型域(Machine Type)和魔数域(Magic Number)。同时为机器类型域定义了 相应的宏 N_MACHTYPE 和 N_FLAGS,如图 1

14、4-1 所示。在 Linux 0.9x 系统中,对于采用静态库连接的执行文件,图中各域注释中括号内的值 是该字段的默认值。这种二进制执行文件开始处的 4 个字节是:0x0b, 0x01, 0x64, 0x00而这里的头文件仅定义了魔数域。因此,在 Linux 0.1x 系统中一个 a.out 格式的二进 制执行文件开始的 4 个字节是:0x0b, 0x01, 0x00, 0x00可以看出,采用 GNU 的 a.out 格式的执行文件与 Linux 0.1x 系统上编译出的执行文 件的区别仅在机器类型域。因此我们可以把 Linux 0.9x 上的 a.out 格式执行文件的机器类 型域(第 3 个字节)清零,让其运行在 0.1x 系

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号