1. 程式人生 > >errno、strerror、perror的使用

errno、strerror、perror的使用

errno、strerror、perror的使用

 (2018-11-02 23:46:45)

轉載

   

呼叫linux 系統api 的時候會出現一些錯誤,想知道失敗的原因

一、errno

1.errno是"errno.h"中定義的以E開頭的巨集,代表數字。

        (如果是在核心,可能是/usr/include/asm/errno.h 、include/asm-generic/errno-base.h)

2.程式剛剛啟動的時候,errno 被設定為 0;程式在執行過程中,任何一個函式發生錯誤都有可能修改 errno 的值。

3.標準庫中的函式只會將 errno 設定為一個用以表明具體錯誤型別的非零值,不會再將 errno 設定回零值。

4.再次設定 errno 的值會覆蓋以前 errno 的值

 

二、strerror

作用:返回errno對應的字串

標頭檔案:error.h

函式原型:char *strerror(int errnum);

返回值:errno對應的字串

例程:

FILE *fp=NULL;

fp = fopen("test.txt", "r");

if(fp == NULL){

printf("%s\n",strerror(errno));

}

 

執行結果:(如果沒有此檔案)

No such file or directory

 

三、perror

作用:先列印s對應的字串,再列印:(冒號),再列印errno對應的字串

標頭檔案:error.h

函式原型:void perror(const char *s);

例程:

FILE *fp=NULL;

fp = fopen("test.txt", "r");

if(fp == NULL){

perror("Open test.txt");

}

 

執行結果:(如果沒有此檔案)

Open test.txt:No such file or directory