转自  http://blog.csdn.net/todd911/article/details/9132095

很多库函数,特别是那些与操作系统有关的,当执行失败时会通过一个名称为errno的外部变量,通知程序该函数调用失败。

下面的代码利用这一特性进行错误处理:

errno = ;
/
/*调用库函数*/
if(errno)
/*处理错误*/

上面的处理是错误的。

要理解这一点,我们不妨假想一下库函数fopen在调用时可能会发生什么情况,当fopen函数为要求新建一个文件以供程序输出,如果已经存在一个同名文件,fopen函数将先删除它,然后新建一个文件,这样fopen函数可能需要调用其他的库函数来检测同名文件是否已经存在。假设用于检测文件的库函数在文件不存在时,会设置errno,那么,fopen函数每次新建一个事先并不存在的文件时,即使没有任何程序错误发生,errno也仍然可能被设置。因此,在调用库函数时,我们应该先检测作为错误指示的返回值,确定程序执行已经失败,然后再检查errno:

/*调用库函数*/
if(返回的错误值)
/* 检查errno值*/

errno值并不可靠。

 

最新文章

  1. simple_html_dom配合snoopy使用
  2. java对xml文件的读取
  3. 设计模式学习之备忘录模式(Memento,行为型模式)(19)
  4. 移动网站中,用canvas,svg比用图片好?
  5. sublime3+quick智能提示
  6. 51nod1215 数组的宽度
  7. 疑难杂症:java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion(Ljava/lang/String;)V
  8. SE 2014年5月6日
  9. struts2 中文乱码问题,自定义过滤器通用解决方法
  10. ant 执行jmeter
  11. Python学习(四十三)—— Djago-admin管理工具
  12. 如何配置.Net Core Centos守护进程配置
  13. ASP.NET上传大文件报错,IIS7.0
  14. [转]kaldi 神经网络
  15. 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无法正常运行
  16. spring boot Tomcat文件上传找不到零时文件夹
  17. ecmall 支付成功 订单状态没有改变解决办法
  18. fastjson总结
  19. CS1.6找金钱和人物血量
  20. 当EditText编辑时 hint 在 6.0 手机上显示不出来

热门文章

  1. Luogu5363 SDOI2019移动金币(博弈+动态规划)
  2. BZOJ4698 SDOI2008Sandy的卡片(后缀自动机)
  3. 【转载】SpringBoot yml 配置
  4. RESTful接口开发
  5. 听课笔记--DP--Authentication Failed
  6. layui下拉多选formSelects使用方法
  7. MySQL5.7.28免安装版配置
  8. Array+DP leetcode-11.装更多的水
  9. idou老师教你学Istio12 : Istio 实现流量镜像
  10. Java 基础 面向对象- 成员内部类/局部内部类/举例Comparable 接口的匿名内部类