c 程式設計之perror

2021-09-26 00:13:48 字數 744 閱讀 5058

void perror(const char *s); perror ("open_port");

perror( ) 用來將上乙個函式發生錯誤的原因輸出到標準裝置(stderr)。引數 s 所指的字串會先列印出,後面再加上錯誤原因字串。此錯誤原因依照全域性變數errno 的值來決定要輸出的字串。

在庫函式中有個errno變數,每個errno值對應著以字串表示的錯誤型別。當你呼叫"某些"函式出錯時,該函式已經重新設定了errno的值。perror函式只是將你輸入的一些資訊和現在的errno所對應的錯誤一起輸出。

這裡有乙個疑問,c++已經有了異常處理,為什麼還需要乙個perror呢?原因是,在linux很多操作中,尤其是系統呼叫,檔案操作中,如果沒有正常執行完畢,是不會報錯的,只會返回乙個表示錯誤的描述符或控制代碼。例如,非常典型的是mkdir,fopen,socket等函式。這時候,我們只知道函式沒有成功執行,但是問題出在**我們並無從得知。那麼這些資訊就消失了嗎?並沒有,這些資訊被儲存於乙個全域性變數errno中,每次有函式執行時,都會有乙個資訊被存入errno,即便這個函式成功執行,也會存入乙個sucess進去(注意這些函式的資訊是互相覆蓋的)。那麼我們發現函式沒有成功執行,就需要perror函式調取函式沒有成功執行的原因。

例如

#include int main()

return 0;

}

在這段程式中,開啟檔案的函式沒有正確執行,我們想知道為什麼沒有執行,是其他程序占用還是不存在,於是就呼叫perror函式產看。

C 程式設計之介面

1.定義 介面是把公共方法和屬性組合起來,以封裝特定功能的乙個集合。一旦定義了介面,就可以在類中實現它。這樣類就可以支援介面所指定的所有屬性和成員 注意1 介面不能單獨存在。不能像例項化乙個類那樣例項化乙個介面。另外介面不能包含實現其成員的任何 只能定義成員本身。實現過程必須在實現介面的類中實現。注...

c 網路程式設計之 DNS程式設計

system.命名空間包含了 dns類,它可以提供了編寫 dns所需要的函式。下面講解 dns類的一些方法以及在 c 中如何利用該類編寫程式。一 同步方法 在dns 類中定義了四個同步方法 gethostname gethostbyname gethostbyaddress resolve 下面分別...

C 程式設計之C 基礎(七)

雖然語句是c 程式的構造塊,但任何一條符合語法c 語句離不開表示式。表示式 是由乙個或多個運算元以及零個或零個以上的運算子所組成的序列,可以通過計算得到乙個值 物件 方法或命名空間等結果。表示式可以包含文字值 方法呼叫 運算子及其運算元,或簡單名稱。簡單名稱可以是變數 型別成員 方法引數 命名空間或...