概述
公共標頭檔案定義了乙個整型值errno以及可以賦予它的各種常量。
大部分函式出錯後返回-1,並且自動給errno賦予當前發生的錯誤列舉值。
需要注意的一點是,errno只有在錯誤發生時才會被複寫,這就意味著如果按順序執行ab兩個函式,如果只有a函式出錯,則執行完ab函式後errno依然保留著a函式出錯的列舉值,
如果ab均出錯,那麼在b之前如果errno沒有被處理,那麼將會被b出錯的列舉值所覆蓋。
linux
為了避免多執行緒環境共享乙個errno,linux系統定義了乙個巨集來解決這個問題,這個定義已經定義在系統標頭檔案中。
externint *__errno_location(void
);#define errno (*__errno_location())
最讓人疑惑的是,你可以為此巨集賦值,具體解析可以參考這個文章。
int main(void)
示例
#include #include#include
#include
/*already define in */
/*extern
int *__errno_location(void
);#define errno (*__errno_location())*/
char buf[500000
];int main(void
)else
printf(
"%d\n
", my_errno);
re = 0
; re = open("
./not_exists_file
", o_rdonly);
if(re > -1
)else
printf(
"%d\n
", my_errno);
return0;
}
以上**輸出:
file error: bad file descriptor9file error: no such file or directory
2
errno列表:值含義
常量函式
0
success
1
operation not permitted
2
no such file or directory
3
no such process
4
interrupted system call
5
input/output error
6
no such device or address
7
argument list too long
8
exec format error
9
bad file descriptor
10
no child processes
c語言 出錯處理errno
include void perror const char msg 1.errno變數 檔案 中定義了符號 errno 以及可以賦予它的各種常量,這些常量都是以字元 e 開頭。例如,若 errno 等於常量 eacces,表示產生了許可權問題 例如,沒有開啟所要求檔案的足夠許可權 errno特點 ...
Unix環境程式設計 出錯處理 errno
當unix函式出錯時,通常會返回乙個負值,而且整型變數errno通常被設定為包含出錯資訊的乙個值。整型變數errno包含在標頭檔案中,該檔案中包含了errno的各種取值,這些取值通常以字母e開頭 例如 eaccess表示沒有訪問許可權 在以前的unix系統中通常將errno定義為 extern in...
linux 出錯處理
當linux 系統出錯時候,常返回乙個負值記錄在變數errno中。對於errno的使用用兩條規則 1 如果沒有出錯,其值不會被清除 2 任一函式不會將errno置0 c標準有2個函式列印出錯日誌 include char strerror int errnum 此函式講errno 對映成乙個字串,返...