linux apr是指Apache可移植運行庫,其英文全名為「Apache portable Run-time libraries」;其主要為上層的應用程式提供一個可以跨越多作業系統平台使用的底層支援介面庫。
本教學操作環境: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中支援的基本類型
類型名稱 |
資料夾名稱 |
#描述 # |
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 | ##Apache數組(堆疊)和表格以及雜湊表|
/apr/threadproc |
| 行程與執行緒操作|
user |
/apr/user |
使用者與使用者群組操作 |
time |
/apr/time |
時間運算 |
string |
/apr/strings |
字串運算 |
password |
/apr/passwd |
##終端程式碼處理 |
misc | /apr/misc | 大雜燴,不屬於其餘類別的任何apr類型都可以放在裡面 |
shmem | /apr/shmem | 共享記憶體 |
random | /apr/random | 隨機數產生庫 |
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中文網其他相關文章!