perror函数

本文介绍了perror函数的使用方法及其实现原理。perror函数能够将上一个函数发生错误的原因输出到标准设备(stderr),并结合errno宏定义来显示具体的错误信息。

perror函数


perror函数与strerror函数都是跟errno有关系的函数, 而strerror函数不明白的可以去看一看, 了解一下. 现在, 主要说的是perror.

#include<stdio.h>   // 头文件
#include<stdlib.h>

void perror(const char *s); // 函数声明

  perror ( )用 来 将 上 一 个 函 数 发 生 错 误 的 原 因 输 出 到 标 准 设备 (stderr) .参数 s 是加上对错误的描述. 而错误的编号是放在errno 中, perror会去自动调用 errno 的错误提示. 大致有点像

void perror(char char *s)
{
    printf("%s %s", s, strerror(errno));
}

当你调用某些函数出错时, 就会自动修改errno的值. perror函数只是输出你写的提示和现在的errno所对应的错误.

就像这样打开一个不存在的文件, 就会将错误编号放在error中, 而perror就是输出上次编号的错误提示.

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/fcntl.h>
#include <stdlib.h>

int main()
{
    open("function_dou", O_WRONLY);
     perror("function_dou don't error");

    return 0;
}

运行结果:

rpz@funct:~$ ./a.out 
function_dou don't error: No such file or directory

在这里还是想要说一下, 关于errno的数据类型, 它并不是一个 int, long, 等类型, 它是一个定义在errno.h头文件中的一个宏定义. 它可以在不同的进程和线程中分别调用, 同一时间允许有不同的值(恩? 是不是很不明白, 同一东西, 同一时间有不同的值? 是不是觉得很不可思议, 是不是我写错了, 不是!). 具体的实现, 我会总结errno. 在网上应该也能找到, 我也是在其他地方看到才知道的.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值