linux程序中的错误处理

程序中的错误处理

系统维护这一个全局变量 int errno , 当系统调用或者库函数出现错误时,errno 会记录这错误的值。 > 0 的值,每一个错误码会对应一个错误的描述信息。

#include <errno.h>
可以获取错误码

STRERROR(3)
#include <string.h>
char *strerror(int errnum);
功能
根据错误编号,返回错误编号的字符串
参数:
错误的编号 errno
返回值
返回一个描述错误的字符串

#include <errno.h>
#include <stdio.h>
#include <string.h>
int main (int argc, char * argv[])
{
	FILE * fp = fopen(argv[1],"r");
	if (NULL == fp){
		printf("fopen error %d\n",errno);
		printf(" %s\n",strerror(errno));
		return -1;
	}
	fclose(fp);
	return 0;
}

./a.out he
fopen error 2
No such file or directory

void perror(const char *s);
功能 输出一条系统错误的消息
参数 用户自定义个字符串
返回值

标准输入: 默认的是 键盘的输入 FILE * stdin
标准输出:默认的是显示器 FILE* stdout
标准错误输出 默认的是显示器 FILE* stderr

#include <errno.h>
#include <stdio.h>
#include <string.h>
int main (int argc, char * argv[])
{
	FILE * fp = fopen(argv[1],"r");
	if (NULL == fp){
		perror("fopen");
		return -1;
	}
	fclose(fp);
	return 0;
}

./a.out hello
fopen: No such file or directory

自己定义stdio.h
可以减少代码量

#ifndef T_STDIO_H
#define T_STDIO_H

#include <stdio.h>
#define E_MSG(str,v) do {perror(str);\
	return(v);}while(0)

#endif 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值