首頁 >運維 >linux運維 >linux apr是什麼

linux apr是什麼

藏色散人
藏色散人原創
2023-04-06 11:29:551358瀏覽

linux apr是指Apache可移植運行庫,其英文全名為「Apache portable Run-time libraries」;其主要為上層的應用程式提供一個可以跨越多作業系統平台使用的底層支援介面庫。

linux apr是什麼

本教學操作環境:linux5.9.8系統、Dell G3電腦。

linux apr是什麼?

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中支援的基本類型

##Apache數組(堆疊)和表格以及雜湊表process/apr/threadproc行程與執行緒操作

類型名稱

資料夾名稱

#描述

#

atomic

/apr/atomic

原子運算

dso

/apr/dso

動態載入共用程式庫

fileio

/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

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影片教學

以上是linux apr是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn