Linux/Unix C程式設計之的perror函式,strerror函式,errno
#include <stdio.h> // void perror(const char *msg);
#include <string.h> // char *strerror(int errnum);
#include <errno.h> //errno
errno是錯誤程式碼,在errno.h標頭檔案中
void perror(const char *s)
perror是錯誤輸出函式,在標準輸出裝置上輸出一個錯誤資訊。
引數s一般是引數錯誤的函式
例如perror("fun"),其輸出為:fun:後面跟著錯誤資訊(加上一個換行符)
char *strerror(int errnum);通過引數errnum(也就是errno),返回錯誤資訊
以下是測試程式:
//程式名:errtest.c,環境為linux
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main(int argc,char *argv[]){
FILE *fp;
char *buf;
if((fp=fopen(argv[1],"r"))==NULL)
{
perror("perror");
printf("sterror:%s\n",strerror(errno));
exit(1);
}
perror("perror");
errno=13;
printf("strerror:%s\n",strerror(errno));
fclose(fp);
return 0;
}
編譯為errtest
如果輸入這樣的命令格式:./errtest 111.c(其中111.c不存在)
輸出為:
perror: No such file or directory
sterror:Illegal seek
就是兩個都是輸出到螢幕上來了。而且sterror函式通過errno得到錯誤程式碼
如果命令格式為:./errtest 111.c > out.c(其中111.c不存在)
把輸出重定位到out.c檔案中,會發現螢幕輸出為:
perror: No such file or directory
就是說函式perror始終輸出到標準輸出裝置上。而printf輸出到檔案中了
如果命令格式為:./errtest 222.c(其中222.c存在)
螢幕輸出為:
perror: Success
strerror: Permission denied(通過errno=12得到的一個資訊)
相關文章
- 一、errno perror strerror的使用Error
- 函式程式設計函式程式設計
- Linux系統程式設計之程式替換:exec 函式族Linux程式設計函式
- python函式程式設計 返回函式 匿名函式 裝飾器 偏函式Python函式程式設計
- 【Linux網路程式設計】Socket Api函式Linux程式設計API函式
- JS 命令式 宣告式 函式式 程式設計?JS函式程式設計
- linux之__setup函式Linux函式
- Python函數語言程式設計-高階函式、匿名函式、裝飾器、偏函式Python函數程式設計函式
- select函式socket程式設計函式程式設計
- PHP函式漏洞審計之addslashes函式-PHP函式
- 函式設計函式
- 瞭解 JavaScript 函數語言程式設計 - 宣告式函式JavaScript函數程式設計函式
- python程式設計之slice與indices函式用法Python程式設計函式
- 函式響應式程式設計與RxSwift函式程式設計Swift
- JavaScript函數語言程式設計,真香之組合函式(二)JavaScript函數程式設計函式
- JavaScript函數語言程式設計之深入理解純函式JavaScript函數程式設計函式
- 不用任何賦值的程式設計稱為*函式式*程式設計賦值程式設計函式
- C++之memset函式C++函式
- 好程式設計師Python培訓分享函數語言程式設計之匿名函式程式設計師Python函數函式
- 研究linux函式 之 fork()Linux函式
- Lambda表示式入門--函數語言程式設計與函式式介面函數程式設計函式
- Day 14 匿名函式 內建函式 物件導向程式設計函式物件程式設計
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- Bash程式設計007——函式(一)程式設計函式
- Java中的函數語言程式設計(二)函式式介面Functional InterfaceJava函數程式設計函式Function
- 03 shell程式設計之case語句與函式程式設計函式
- JavaScript函數語言程式設計之pointfree與宣告式程式設計JavaScript函數程式設計
- 揚帆起航:從指令式程式設計到函式響應式程式設計程式設計函式
- Python 函數語言程式設計 – 高階函式Python函數程式設計函式
- Python函數語言程式設計自帶函式Python函數程式設計函式
- JavaScript函數語言程式設計(純函式、柯里化以及組合函式)JavaScript函數程式設計函式
- 實驗3 c語言函式應用程式設計C語言函式程式設計
- 實驗3 C語言函式應用程式設計C語言函式程式設計
- C++ 逆向之 move 函式C++函式
- C++之函式過載C++函式
- Kotlin之“with”函式和“apply”函式Kotlin函式APP
- C語言程式設計>第八週 ② 編寫函式fun,函式的功能是:根據以下公式計算,計算結果作為函式值返回。C語言程式設計函式公式
- JavaScript 設計模式系列 – 自定義函式(惰性函式)JavaScript設計模式函式
- Ardunio和HAL庫函式程式設計函式程式設計