錯誤處理:
??? 許多系統調用和函數在失敗后,會在失敗時設置外部變量errno的值來指明失敗原因。許??? 多不同的函數庫都把這個變量作為報告錯誤的標準方法。程序必須在函數報告出錯后立刻
??? 檢查errno變量,因為它可能被下一個函數調用所覆蓋,即使下一個函數本身沒有出錯,
??? 也可能會覆蓋這個變量。錯誤代碼的取值和含義都在頭文件errno.h中,如下所示:
??? EPERM:操作不允許
??? ENOENT:文件或目錄不存在
??? EINTR:系統調用被中斷
??? EIO:I/O錯誤
??? EBUSY:設備或資源繁忙
??? EEXIST:文件存在
??? EINVAL:無效參數
??? EMFILE:打開的文件過多
??? ENODEV:設備不存在
??? EISDIR:是一個目錄
??? ENOTDIR:不是一個目錄
??? 常用的用來報告出現的錯誤的函數:strerror perror
???
strerror函數:將錯誤代碼映射為一個字符串,該字符串對發生的錯誤類型進行說明。
函數原型:
#include <string.h>char *strerror(int errnum);
??
perror函數:將errno變量中報告的當前錯誤映射到一個字符串,并把它輸出到標準錯誤輸出流。???????
函數原型:
函數原型:
#include <stdio.h>void perror(const char *s);
?