嵌入式Linux:strerror函數(shù)和perror函數(shù)
strerror函數(shù)和perror函數(shù)是C標(biāo)準(zhǔn)庫中的兩個函數(shù),用于處理和顯示錯誤信息。它們幫助程序員在程序運(yùn)行過程中了解并診斷錯誤原因。
strerror函數(shù),返回錯誤消息字符串,需要程序員自己調(diào)用printf等函數(shù)來打印錯誤消息。更加靈活,可以組合其他字符串一起使用。
perror函數(shù),直接打印錯誤消息,適合簡單的錯誤報告。不需要額外的printf調(diào)用。
1
strerror函數(shù)
strerror函數(shù)將錯誤代碼轉(zhuǎn)換為相應(yīng)的錯誤消息字符串。其原型為:
char *strerror(int errnum);
參數(shù):
errnum:錯誤代碼,通常是全局變量errno的值。
返回值:
返回指向描述錯誤的字符串的指針。
在以下示例中,嘗試打開一個不存在的文件會導(dǎo)致fopen失敗,errno被設(shè)置為相應(yīng)的錯誤代碼。strerror(errno)將該錯誤代碼轉(zhuǎn)換為一個描述錯誤的字符串并打印出來。
#include#include#include int main() { FILE *file = fopen("nonexistent.txt", "r"); if (file == NULL) { printf("Error opening file: %sn", strerror(errno)); } return 0;}
2
perror函數(shù)
perror函數(shù)直接打印一條描述錯誤的消息,錯誤信息包括由errno指定的錯誤描述。其原型為:
void perror(const char *s);
參數(shù):
s:一個用戶提供的前綴字符串,如果非空,則首先打印該字符串,然后打印一個冒號和空格,再打印錯誤消息。
返回值:
無返回值。
在以下示例中,perror函數(shù)輸出的消息包括用戶提供的前綴字符串和錯誤描述。
#include#include int main() { FILE *file = fopen("nonexistent.txt", "r"); if (file == NULL) { perror("Error opening file"); } return 0;}
例如,如果文件不存在,輸出可能是:
Error opening file: No such file or directory
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。