1. 程式人生 > >Linux下的C語言函式perror

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 
版權宣告:本文為博主原創文章,轉載請附上博文連結!