errno , perror,strerror

本文介绍了C语言中处理系统错误的errno全局变量,以及perror和strerror函数,它们将错误码转化为可读的错误信息。在Linux和Windows中,errno提供了不同的错误码,用于标识各种系统调用失败的原因。
摘要由CSDN通过智能技术生成

1. 简介

很多系统函数在错误返回时将错误原因记录在libc定义的全局变量errno中,每种错误原因对应一个错误码。

errno在头文件errno.h中声明,是一个整型变量,所有错误码都是正整数

然后我们可以用perrorstrerror函数将errno解释成字符串


2. perror

#include <stdio.h>
void perror(const char *s);

实例:

	FILE *fp = fopen("text.txt","r+");

	if ( !fp )
	{
		perror("Open text.txt");
	}
输出结果:

Open text.txt: No such file or directory

fopen返回-1并设置errnoENOENT,紧接着perror函数读取errno的值,将ENOENT解释成字符串No such file or directory并打印,最后打印的结果是Open text.txt: No such file or directory

3. strerror

#include <string.h>

char *strerror(int errnum);
//返回值:错误码errnum所对应的字符串

实例:

	FILE *fp = fopen("text.txt","r+");

	if ( !fp )
	{
		perror("Open text.txt");
	}

	if (!fp )
	{
		printf( "errno = %d, message : %s\n", errno, strerror(errno) );
	}

输出:

Open text.txt: No such file or directory
errno = 2, message : No such file or directory


4. Linux 中的errno

errno.00 is: Success
errno.01 is: Operation not permitted
errno.02 is: No such file or directory
errno.03 is: No such process
errno.04 is: Interrupted system call
errno.05 is: Input/output error
errno.06 is: No such device or address
errno.07 is: Argument list too long
errno.08 is: Exec format error
errno.09 is: Bad file descriptor
errno.10 is: No child processes
errno.11 is: Resource temporarily unavailable[资源临时不可用](连续发送数据时候回出此错,加延时)
errno

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值