出錯處理2 包裹函式

2022-07-12 03:00:15 字數 678 閱讀 1224

sem_post(ptr)

在linux/unix程式設計中當遇到乙個以大寫字母開頭的函式名時,它就是我們說的包裹函式。它呼叫乙個名字相同但是相應首字母小寫的實際函式,當碰到錯誤時,包裹函式總是輸出乙個出錯訊息後終止。

為什麼要用包裹函式呢?我們不已經有了標準的errno變數來返回錯誤型別了麼?因為我們發現執行緒函式出錯時並不設定errno變數

;相反,本該設定errno值改由執行緒函式作為其返回值返**用者。這意味著我們每次呼叫任意乙個執行緒函式時,都得分配乙個變數來儲存函式返回值,然後再呼叫我們的err_sys函式前,把errno設定成儲存的值。

看例程

#include/*my_err.h*/

#includevoid err_sys(const char *str)

#includeint thread(void *arg)

void pthread_create(pthread_t *th)

return;

}int main()

*/sleep(1);

return 0;

}除了將首字母大寫以外,還可以給函式名字首e作為標誌( epthread_create() )

包裹函式有助於檢查那些錯誤返回值常被忽略的函式,如close和pthread_mutex_lock等。

APUE unix出錯處理

當unix函式出錯時 系統呼叫 常常會返回乙個負值,而且整型變數errno通常被設定為含有附加資訊的乙個值。檔案中定義了符合errno以及可以賦予它的各種常量,這些常量都以字元e開頭。另外,unix系統手冊第2部分的第1頁intro 2 列出了所有這些出錯常量。在linux中,出錯常量在errno ...

出錯處理函式

我們知道,系統函式呼叫不能保證每次都成功,必須進行出錯處理,這樣一方面可以保證程式邏輯正常,另一方面可以迅速得到故障資訊。出錯處理函式 include include char strerror int errnum see notes errnum 傳入引數,錯誤編號的值,一般取 errno 的值...

linux 出錯處理

當linux 系統出錯時候,常返回乙個負值記錄在變數errno中。對於errno的使用用兩條規則 1 如果沒有出錯,其值不會被清除 2 任一函式不會將errno置0 c標準有2個函式列印出錯日誌 include char strerror int errnum 此函式講errno 對映成乙個字串,返...