在 unix 系統中,系統呼叫出錯通常會設定變數 errno 的值,以指示出錯的具體型別,一般為負值,這些值通常對應乙個描述性資訊,可以通過 strerror( errno) 獲取或者通過 perror 將錯誤資訊輸出到標準錯誤。
在支援執行緒的系統環境中,同一程序的不同執行緒有各自的 errno,因此不用考慮它的一致性問題。
errno 的使用需要注意兩條規則:
一旦有上述錯誤,那麼必然要採取相應的錯誤來處理。上述錯誤可分為致命性錯誤和非致命性錯誤,前者最多只能列印一條日誌來提示使用者,後者則可以採取重試等方案來提高程式的健壯性。
非致命性錯誤一般有:eagain,enfile,enobufs,enolck,enospc,ewouldblock;有些場景下 enomem、ebusy、eintr 也可以是非致命性錯誤,需要注意分析。
Unix環境程式設計 出錯處理 errno
當unix函式出錯時,通常會返回乙個負值,而且整型變數errno通常被設定為包含出錯資訊的乙個值。整型變數errno包含在標頭檔案中,該檔案中包含了errno的各種取值,這些取值通常以字母e開頭 例如 eaccess表示沒有訪問許可權 在以前的unix系統中通常將errno定義為 extern in...
Linux程式設計之出錯處理
gnu linux 程式設計指南 一書中對出錯處理部分寫的不錯。常用的內容如下 l中支援 assert 函式,注意,assert 檢查發現條件不成立時呼叫 abort 終止程式執行,應用程式沒有機會做清除工作。lc 標準定義了 line 和 file 巨集,gnu c 擴充套件中定義了 functi...
unix環境高階程式設計之環境搭建
首先,apue.h不是系統自有的,而是做著自己的寫的,因此,本書程式設計的第一步就是將該檔案包含下來 2.執行一下 ls,發現多了乙個apue.3e,cd 命令進入該目錄 3.執行 make 第三步一般都會出錯,提示是需要 bsd,執行 apt yum install y libbsd dev,重新...