共计 2542 个字符,预计需要花费 7 分钟才能阅读完成。
本文丸趣 TV 小编为大家详细介绍“linux apr 指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux apr 指的是什么”文章能帮助大家解决疑惑,下面跟着丸趣 TV 小编的思路慢慢深入,一起来学习新知识吧。
linux apr 是指 Apache 可移植运行库,其英文全称是“Apache portable Run-time libraries”;其主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。
apache apr 介绍
APR(Apache portable Run-time libraries,Apache 可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期 的 Apache 版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。
随着 Apache 的进一步开 发,Apache 组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR 的开发就从 Apache 中独立出来,Apache 仅仅是使用 APR 而已。目前 APR 主要还是由 Apache 使用,不过由于 APR 的较好的移植性,因此一些需要进行移植的 C 程序也开始使用 APR,开源项目比如 Flood loader(http://httpd.apache.org/test/flood/,该项目用于服务器压力测试,不仅仅适用于 Apache)、FreeSwitch(www.freeswitch.org),JXTA-C(http://jxta-c.jxta.org,C 版本的 JXTA 点对点平台实现);商业的项目则包括 Blogline(http://www.bloglines.com/,covalent(http://www.covalent.net)等等。
APR 使得平台细节的处理进行下移。对于应用程序而言,它们根本就不需要考虑具体的平台,不管是 Unix、Linux 还是 Window,应用程序执行的接口基本都是统一一致的。因此对于 APR 而言,可移植性和统一的上层接口是其考虑的一个重点。而 APR 最早的目的并不是如此,它最早只是希望将 Apache 中用到的所有代码合并为一个通用的代码库,然而这不是一个正确的策略,因此后来 APR 改变了其目标。有的时候使用公共代码并不是一件好事,比如如何将一个请求映射到线程或者进程是平台相关的,因此仅仅一个公共的代码库并不能完成这种区分。APR 的目标则是希望安全合并所有的能够合并的代码而不需要牺牲性能。
APR 的最早的一个目标就是为所有的平台 (不是部分) 提供一个公共的统一操作函数接口,这是一个非常了不起的目的,当然也是不现实的一个目标。我们不可能支持所有平台的所有特征,因此 APR 目前只能为大多数平台提供所有的 APR 特性支持,包括 Win32、OS/2、BeOS、Darwin、Linux 等等。为了能够实现这个目标,APR 开发者必须为那些不能运行于所有平台的特性创建了一系列的特征宏 (FEATURE MACROS) 以在各个平台之间区分这些特征。这些特征宏定义非常简单,通常用 APR_HAS_FEATURE 参数设置:
如果某个平台具有这个特性,则该宏必须设置为 true,比如 Linux 和 window 都具有内存映射文件,同时 APR 提供了内存映射文件的操作接口,因此在这两个平台上,APR_HAS_MMAP 宏必须设置,同时 ap_mmap_* 函数应该将磁盘文件映射为内存并返回适当的状态码。如果你的操作系统并不支持内存映射,那么 APR_HAS_MMAP 必须设置为 0,而且所有的 ap_mmap_* 函数也可以不需要定义。第二步就是对于那些在程序中使用了不支持的函数必须提出警告。
目前 APR 中支持的基本类型包括下面几种:
表 3 -1 APR 中支持的基本类型
类型名称
文件夹名称
描述
atomic
/apr/atomic
原子操作
dso
/apr/dso
动态加载共享库
file io
/apr/file_io
文件 IO 处理
mmap
/apr/mmap
内存映射文件
locks
/apr/locks
进程和线程互斥锁
memory
/apr/memory
内存池操作
network_io
/apr/network_io
网络 IO 处理
poll
/apr/poll
轮询 IO
table
/apr/tables
Apache 数组 (堆栈) 和表格以及哈希表
process
/apr/threadproc
进程和线程操作
user
/apr/user
用户和用户组操作
time
/apr/time
时间操作
string
/apr/strings
字符串操作
password
/apr/passwd
终端密码处理
misc
/apr/misc
大杂烩,不属于其余类的任何 apr 类型都可以放在里面
shmem
/apr/shmem
共享内存
random
/apr/random
随机数生成库
apache 的 apr 项目目前有三部分组成,分别是 apr、apr-util、apr-iconv
apr 中包含了一些通用的开发组件,包括 mmap,DSO 等等
apr-util 该目录中也是包含了一些常用的开发组件。这些组件与 apr 目录下的相比,它们与 apache 的关系更加密切一些。比如存储段和存储段组,加密等等。
apr-iconv 包中的文件主要用于实现 iconv 编码。目前的大部分编码转换过程都是与本地编码相关的。在进行转换之前必须能够正确地设置本地编码。因此假如两个非本地编码 A 和 B 需要转换,则转换过程大致为 A - Local 以及 Local- B 或者 B - Local 以及 Local- A。
以上三个包最新下载地址为:
http://labs.mop.com/apache-mirror//apr/apr-1.4.6.tar.gz
http://labs.mop.com/apache-mirror//apr/apr-util-1.4.1.tar.gz
http://labs.mop.com/apache-mirror//apr/apr-iconv-1.2.1.tar.gz
读到这里,这篇“linux apr 指的是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注丸趣 TV 行业资讯频道。