Linux下的C語言函式perror
perror的函式原型為`void perror(const char *s)`
這個函式會先輸出你傳給他的實參 s 所指的字串,後面再加上錯誤原因字串。此錯誤原因依照全域性變數errno 的值來決定要輸出的字串。
在庫函式中有個errno變數,每個errno值對應著以字串表示的錯誤型別。當你呼叫"某些"函數出錯時,該函式已經重新設定了errno的值。perror函式只是將你輸入的一些資訊和現在的errno所對應的錯誤一起輸出。只有當一個庫函式失敗時,errno才會被設定。當函式成功執行時,errno的值不會被修改。這意味著我們不能通過測試errno的值來判斷是否有錯誤存在。反之,只有當被呼叫的函式提示有錯誤發生時檢查errno的值才有意義。檢視錯誤程式碼errno是除錯程式的一個重要方法。當linux C api函式發生異常時,一般會將errno變數(需include errno.h)賦一個整數值,不同的值表示不同的含義,可以通過檢視該值推測出錯的原因。在實際程式設計中用這一招解決了不少原本看來莫名其妙的問題。
例:
`#include<stdio.h>
#include<stdlib.h>
int main()
{
char *p="abcd";
FILE *fp;
fp=fopen("asfaasf.txt","r");
if(fp==NULL)
{
perror(p);
exit(1);
}
return 0; } `
那麼,他的輸出結果就會是`abcd: No such file or directory`
也就是說,這個函式會先輸出你給他傳的字串,在輸出錯誤原因
---------------------
作者:呂白_
來源:CSDN
原文:https://blog.csdn.net/weixin_36888577/article/details/75114030?utm_source=copy
版權宣告:本文為博主原創文章,轉載請附上博文連結!