Unix環境程式設計 出錯處理 errno

2021-06-17 16:43:01 字數 1265 閱讀 1122

當unix函式出錯時,通常會返回乙個負值,而且整型變數errno通常被設定為包含出錯資訊的乙個值。

整型變數errno包含在標頭檔案中,該檔案中包含了errno的各種取值,這些取值通常以字母e開頭(例如:eaccess表示沒有訪問許可權).

在以前的unix系統中通常將errno定義為:

extern int errno

但是在引入多執行緒的概念後,由於多執行緒共享記憶體的位址空間,每個執行緒都應該有屬於它自己的區域性errno以防止執行緒之間的幹  擾。linux為了支援多執行緒訪問errno,將其定義為:

extern int *__errno_location()

#define errno (*__errno_location())

對於errno應該知道兩條規則:

1. 如果函式沒有出錯,errno的值就不會被重置,在這種情況下檢視errno的值沒有意義,所以當且僅當函式呼叫出錯時才去檢視errno  的值。

2. 任意函式都不會將errno的值置為0,在中定義的常量都不為0.

為了方便檢視錯誤資訊,標準c提供了如下兩個函式:

1. char  *strerror(int errno)

該函式將錯誤碼errno作為引數,將該錯誤碼表示的詳細資訊作為字串返回。

#include#include#includeint

main()

return 0;

}

如果檔案/tmp/wahaha不存在,將列印:

no such file or directory

2. void perror(char *message)

perror 封裝了錯誤碼errno,將error表示的錯誤資訊重定向到stderr上,其輸出格式為:message:errno表示的錯誤資訊

.

#include#include#includeint

main()

return 0;

}

如果檔案/tmp/wahaha不存在,將列印:

this is a error msg: no such file or directory

UNIX 環境高階程式設計之出錯處理

在 unix 系統中,系統呼叫出錯通常會設定變數 errno 的值,以指示出錯的具體型別,一般為負值,這些值通常對應乙個描述性資訊,可以通過 strerror errno 獲取或者通過 perror 將錯誤資訊輸出到標準錯誤。在支援執行緒的系統環境中,同一程序的不同執行緒有各自的 errno,因此不...

unix環境高階程式設計 err檔案

include apue.h include for definition of errno include iso c varialbe aruments static void err doit int,int,const char va list nonfatal error related ...

Linux 系統應用程式設計 出錯處理 errno

1.errno變數 檔案 中定義了符號 errno 以及可以賦予它的各種常量,這些常量都是以字元 e 開頭。例如,若 errno 等於常量 eacces,表示產生了許可權問題 例如,沒有開啟所要求檔案的足夠許可權 當 unix 函式出錯時,常常返回乙個負值,而且將整型變數 errno 設定成含有附加...