c語言 出錯處理errno

2021-08-13 11:31:14 字數 1011 閱讀 3387

#include void perror(const char *msg);

1. errno變數

檔案 中定義了符號 errno 以及可以賦予它的各種常量,這些常量都是以字元 e 開頭。例如,若 errno 等於常量 eacces,表示產生了許可權問題(例如,沒有開啟所要求檔案的足夠許可權)。

errno特點:

1、當出錯的時候,errno會自動被賦值。乙個int資料

2、errno預設為0,表示沒有錯誤,當出錯時,errno被賦值(大於0),然後保持改值,直到下一次出錯,被修改為下一次錯誤的值。

errno直接列印是乙個數字,檢視不方便,可用函式轉換為字串。

函式1

#include char *strerror(int errnum);
此函式將 errno對映為乙個出錯資訊字串,並且返回此字串的指標。

函式2

#include void perror(const char *msg);
它首先輸出由 msg 指向的字串,然後是乙個冒號,乙個空格,接著是對應於 errno 值的出錯資訊,最後是乙個換行符。

2. errno_demo

int main(int argc,char* argv)

else

return 0;

}

輸出結果:

errno is 2 

error: no such file or directory 

open file:: no such file or directory

在支援執行緒的環境中,多個執行緒共享程序位址空間,每個執行緒都有屬於它自己的區域性 errno 以避免乙個執行緒干擾另乙個執行緒。

函式 strerror() 不是執行緒安全的。因為該函式將 errnum 對應的字串儲存在乙個靜態的緩衝區中,然後將該緩衝區的指標返回。另乙個執行緒呼叫 strerror() 就會重新設定靜態緩衝區的內容。

Linux 出錯處理errno

概述 公共標頭檔案定義了乙個整型值errno以及可以賦予它的各種常量。大部分函式出錯後返回 1,並且自動給errno賦予當前發生的錯誤列舉值。需要注意的一點是,errno只有在錯誤發生時才會被複寫,這就意味著如果按順序執行ab兩個函式,如果只有a函式出錯,則執行完ab函式後errno依然保留著a函式...

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

當unix函式出錯時,通常會返回乙個負值,而且整型變數errno通常被設定為包含出錯資訊的乙個值。整型變數errno包含在標頭檔案中,該檔案中包含了errno的各種取值,這些取值通常以字母e開頭 例如 eaccess表示沒有訪問許可權 在以前的unix系統中通常將errno定義為 extern in...

APUE unix出錯處理

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