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得到的一個資訊)
相關文章
- linux系統程式設計之錯誤處理:perror,strerror和errnoLinux程式設計Error
- 一、errno perror strerror的使用Error
- linux程式設計之pipe()函式Linux程式設計函式
- Linux系統程式設計(9)—— 程式之程式控制函式exec系列函式Linux程式設計函式
- fstatat()函式 Unix/Linux函式Linux
- C網路程式設計socket之connect函式程式設計函式
- 函式程式設計函式程式設計
- Linux Shell程式設計(29)——函式Linux程式設計函式
- linux系統程式設計之程式(七):system()函式使用Linux程式設計函式
- scala 函式程式設計函式程式設計
- 函式程式設計之道函式程式設計
- UNIX系統程式設計常用庫函式說明(轉)程式設計函式
- UNIX安全程式設計及庫函式說明(轉)程式設計函式
- Linux系統程式設計(8)—— 程式之程式控制函式forkLinux程式設計函式
- linux C程式設計中常用的函式--字元測試篇LinuxC程式程式設計函式字元
- python函式程式設計 返回函式 匿名函式 裝飾器 偏函式Python函式程式設計
- linux程式設計下signal()函式Linux程式設計函式
- JS 命令式 宣告式 函式式 程式設計?JS函式程式設計
- 《高質量C++/C程式設計指南》第9章:類的建構函式、解構函式與賦值函式C++C程式程式設計函式賦值
- C語言setgroups()函式:設定組程式碼函式C語言函式
- Linux系統程式設計之程式替換:exec 函式族Linux程式設計函式
- 函式式思維和函數語言程式設計函式函數程式設計
- 高質量C++/C程式設計指南(第9章 類的建構函式、解構函式與賦值函式) (轉)C++C程式程式設計函式賦值
- 【趣解程式設計】函式程式設計函式
- Windows 程式設計常用函式Windows程式設計函式
- 函式設計函式
- 【Linux網路程式設計】Socket Api函式Linux程式設計API函式
- linux下C語言中的mkdir函式與rmdir函式LinuxC語言函式
- 瞭解 JavaScript 函數語言程式設計 - 宣告式函式JavaScript函數程式設計函式
- Python函數語言程式設計-高階函式、匿名函式、裝飾器、偏函式Python函數程式設計函式
- C++之memset函式C++函式
- JavaScript函數語言程式設計,真香之組合函式(二)JavaScript函數程式設計函式
- JavaScript函數語言程式設計之深入理解純函式JavaScript函數程式設計函式
- 不用任何賦值的程式設計稱為*函式式*程式設計賦值程式設計函式
- PHP函式漏洞審計之addslashes函式-PHP函式
- Scala函式與函數語言程式設計函式函數程式設計
- Lambda表示式入門--函數語言程式設計與函式式介面函數程式設計函式
- 字串函式之Strtok()函式字串函式