检查errno
2024-09-05 04:44:29
转自 http://blog.csdn.net/todd911/article/details/9132095
很多库函数,特别是那些与操作系统有关的,当执行失败时会通过一个名称为errno的外部变量,通知程序该函数调用失败。
下面的代码利用这一特性进行错误处理:
errno = ;
/
/*调用库函数*/
if(errno)
/*处理错误*/
上面的处理是错误的。
要理解这一点,我们不妨假想一下库函数fopen在调用时可能会发生什么情况,当fopen函数为要求新建一个文件以供程序输出,如果已经存在一个同名文件,fopen函数将先删除它,然后新建一个文件,这样fopen函数可能需要调用其他的库函数来检测同名文件是否已经存在。假设用于检测文件的库函数在文件不存在时,会设置errno,那么,fopen函数每次新建一个事先并不存在的文件时,即使没有任何程序错误发生,errno也仍然可能被设置。因此,在调用库函数时,我们应该先检测作为错误指示的返回值,确定程序执行已经失败,然后再检查errno:
/*调用库函数*/
if(返回的错误值)
/* 检查errno值*/
errno值并不可靠。
最新文章
- simple_html_dom配合snoopy使用
- java对xml文件的读取
- 设计模式学习之备忘录模式(Memento,行为型模式)(19)
- 移动网站中,用canvas,svg比用图片好?
- sublime3+quick智能提示
- 51nod1215 数组的宽度
- 疑难杂症:java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion(Ljava/lang/String;)V
- SE 2014年5月6日
- struts2 中文乱码问题,自定义过滤器通用解决方法
- ant 执行jmeter
- Python学习(四十三)—— Djago-admin管理工具
- 如何配置.Net Core Centos守护进程配置
- ASP.NET上传大文件报错,IIS7.0
- [转]kaldi 神经网络
- INFO JobScheduler: Added jobs for time 1524468752000 ms/INFO MemoryStore: Block input-0-1524469143000 stored as bytes in memory/完全分布式 ./bin/run-example streaming.NetworkWordCount localhost 9999无法正常运行
- spring boot Tomcat文件上传找不到零时文件夹
- ecmall 支付成功 订单状态没有改变解决办法
- fastjson总结
- CS1.6找金钱和人物血量
- 当EditText编辑时 hint 在 6.0 手机上显示不出来
热门文章
- Luogu5363 SDOI2019移动金币(博弈+动态规划)
- BZOJ4698 SDOI2008Sandy的卡片(后缀自动机)
- 【转载】SpringBoot yml 配置
- RESTful接口开发
- 听课笔记--DP--Authentication Failed
- layui下拉多选formSelects使用方法
- MySQL5.7.28免安装版配置
- Array+DP leetcode-11.装更多的水
- idou老师教你学Istio12 : Istio 实现流量镜像
- Java 基础 面向对象- 成员内部类/局部内部类/举例Comparable 接口的匿名内部类