Linux 出錯處理errno

2022-02-17 11:58:16 字數 1777 閱讀 7096

概述

公共標頭檔案定義了乙個整型值errno以及可以賦予它的各種常量。

大部分函式出錯後返回-1,並且自動給errno賦予當前發生的錯誤列舉值。

需要注意的一點是,errno只有在錯誤發生時才會被複寫,這就意味著如果按順序執行ab兩個函式,如果只有a函式出錯,則執行完ab函式後errno依然保留著a函式出錯的列舉值,

如果ab均出錯,那麼在b之前如果errno沒有被處理,那麼將會被b出錯的列舉值所覆蓋。

linux

為了避免多執行緒環境共享乙個errno,linux系統定義了乙個巨集來解決這個問題,這個定義已經定義在系統標頭檔案中。

extern

int *__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 descriptor

9file 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 對映成乙個字串,返...