【转载】在使用上perror和strerror应注意的地方
#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输出到文件中了
转载于:https://www.cnblogs.com/chenkai1990/archive/2012/10/25/2740387.html
【转载】在使用上perror和strerror应注意的地方相关推荐
- linux c 打印错误信息error errno perror和strerror的区别
1 perror 头文件:stdio.h void perror(const char *msg); 它是基于errno的当前值,在标准错上产生一条出错信息,然后返回. 它先输出由msg字符串 ...
- perror()与strerror()的应用及区别 man手册查询
perror() 和 strerror() 以一种直观的方式打印出错误信息,对于调试程序和编写优秀的程序非常有用. 下面是perror() 与 strerror() 的使用范例及区别: perror( ...
- 转:perror和strerror的区别
概述: perror和strerror都是C语言提供的库函数,用于获取与erno相关的错误信息,区别不大,用法也简单.最大的区别在于perror向stderr输出结果,而 strerror向stdou ...
- 标准C库函数之perror()、strerror(),以及他们之间各种的优缺点(打印错误信息)
前言 如果,想要深入的学习标准C库中perror.strerror函数,还是需要去自己阅读Linux系统中的帮助文档. 具体输入命令: man 3 perror man 3 strerror 即可查阅 ...
- perror和strerror的使用和区别
(1) perror 头文件:stdio.h void perror(const char *msg); 它是基于errno的当前值,在标准错上产生一条出错信息,然后返回. 它先输出由msg字符串,然 ...
- [转载]虚拟主机上安装Mambo核心系统/组件/模块技巧
[转载]虚拟主机上安装Mambo核心系统/组件/模块技巧 虚拟主机上安装Mambo核心系统/组件/模块技巧 作者: lang3 (http://htmambo.com/) 虚拟主机大都限制了很 ...
- linux下perror函数,Linux学习 之 perror函数,strerror函数,errno
#include // void perror(const char *msg); #include // char *strerror(int errnum); #include //errno e ...
- 梦想的地方!地球上最值得去的20个地方【组图】
如果你是一个热爱大自然的人你肯定会喜欢这个集合.地球上有太多的地方和风景值得我们这辈子至少要去看一次.大多数自然摄影师喜欢没有人出现在他们的照片中,他们想获得纯净.完美的风景,没有人类的影响.这篇文章 ...
- phpcms发布新闻到数据库_Phpcms V9网站从本地上传到服务器需要修改的地方小结
Phpcms V9网站从本地上传到服务器需要修改的地方小结 发布时间:2013-06-22 13:37:28 作者:佚名 我要评论 网站在本地做好后要迁移到服务器上:网站在发展的过程中,很可能 ...
- linux下错误的捕获:errno、perror和strerror的使用
经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因.这个时候使用 ...
最新文章
- 高德地图只显示一个省_浅谈当下各种导航软件:高德地图、百度地图、腾讯地图...
- Winform中对DevExpress的RadopGroup的Description、Value、Tag、Text的理解与使用
- 凤凰涅槃:从 iBatis 到 MyBatis
- iOS: How To Make AutoLayout Work On A ScrollView
- linux shell 中文件编码查看及转换方法
- iOS开发——处理1000张图片的内存优化
- opencv 读取CV_16U图像 c++
- 主板没有rgb接口怎么接灯_老电脑也玩一下RGB,一次酷冷至尊MB400L智瞳机箱安装体验...
- 【Java】Java Long映射到浏览器或者JavaScript后损失精度
- pycocotools安装_pycocotools安装问题
- 为bootstrap+angularJs打造的表格代码生成器
- 代码编辑器横评:为什么 VS Code 能拔得头筹?| 程序员硬核评测
- 为什么要使用多层开发?
- java线程volatile_多线程与高并发(四)volatile关键字
- Spring Cloud Eureka服务注册中心 单节点搭建(学习总结)
- 超好用的网站克隆工具,就是玩
- ubuntu 解压与压缩 zip 文件
- 集成电路设计的一种运作模式(Fabless/Foundry/IDM模式)
- 个别网站打不开,但是别人能打开,手机能打开
- 轻蜗牛直租平台-业务背景介绍
热门文章
- torch.eq(input, other, out=None)
- shell脚本如何获取当前时间
- 基于Python的《庆余年》评论分析
- 2021-08-13 初识servlet
- python中pycharm倒计时_pycharm中的快捷键和简单设置
- 基于springboot+vue的(高考)志愿录取系统(前后端分离)
- count(1),count(*)与count(列名)到底有什么区别?
- c语言中ox1小于小于a,丹江口市2018适应性数学试卷和答案
- HIVE数据导入MYSQL实现方式
- 十九、Math和Random类