
6
|
第一章
API
API 所定義的介面,讓一段軟體得以在原始碼層次與另一段軟體溝通。透過一組標準介
面—通常是函式—所提供的抽象層,一段軟體(通常是,但未必是,較高階者)可以調
用另一段軟體(通常是較低階者)。舉例來說,一個 API 可透過一組函式(用來提供描
繪文字所需要的一切功能)把在螢幕上描繪文字的概念抽象化。API 僅定義介面;而實
際提供 API 功能的軟體則被稱為 API 的
實作
(
implementation
)。
API 常被稱為「契約」(contract)。這並不正確,至少就法律的意義上來說,因為 API
並非「雙方所簽訂的契約」(two-way agreement)。 API 的使用者(通常是較高階的軟
體)對 API 以及它的實作並無置喙的餘地。它只能照原樣使用 API,或者不予以使用:
要麼接受它,要麼放棄它。API 的作用只在確保兩段軟體是否遵照 API 行事,以及具備
原始碼相容性
(
source compatible
);也就是,API 的使用者可以在包含 API 實作的狀況
下成功完成編譯。
C 標準所定義的介面,由標準 C 程式庫來實現(implement),便是 API 的一個實例。此
API 定義了一系列的基礎函式,像是記憶體管理及字串處理常式。
本書中,我們將會用到現存的各種 API,例如第 3 章所探討的標準 I/O 程式庫。本章稍
後會在第 1 章〈標準〉一節探討對 Linux 系統程式設計而言最重要的 API。
ABI
API 定義的是原始碼介面,而 ABI 定義的是特定架構上二或多段軟體之間的低階二元 ...