zoukankan      html  css  js  c++  java
  • 第十一章 Linux系统编程错误处理

    (1 )errno

      在系统编程中错误通常通过函数返回值来表示,并通过特殊变量errno来描述。每个线程都有自己的errno,根据errno值的不同,我们就可以知道自己的程序发生了什么错误,然后进行相应的处理。

      errno这个全局变量在<errno.h>, extern int * __errno_location(void); #define errno (*__errno_location())。

    关于errno有三点需要特别注意:

      1> 如果系统调用或库函数正确执行的话,errno的值是不会被清零。所以,在利用errno之前,最好先对函数的返回值进行判断,看是否发生了错误,返回值错误再利用errno判断时哪里发生了错误。如果一个函数无法从返回值上判断正误,而只能通过errno来判断出错,那你在调用它之前必须手动将errno清零!

      2> 系统调用或库函数正确执行,并不保证errno的值不会被改变!

      3> 任何错误号(即发生错误时errno的取值)都是非0的。

      综上所述,当需要用errno来判断函数是否正确执行的时候,最好先将errno清零,函数执行结束时,通过其返回值判断函数是否正确执行,若没有正确执行,再根据errno判断时哪里发生了错误。

    (2) 错误处理函数

      perror和strerror函数都是用来打印错误提示信息的,它们的原型分别是:

      1> #include <stdio.h>  void perror(const char *s);  它先打印s指向的字符串,然后输出当前errno值所对应的错误提示信息。 

      2> #include <string.h> char *strerror(int errnum);  它返回errnum的值所对应的错误提示信息。

  • 相关阅读:
    股市行情指标计算原理和趋势反映--量化交易1-基础
    建立ssh反向隧道
    Linux学习截图保存
    Java内存泄漏
    Java如何正确比较浮点数
    Github使用
    矩阵向量求导
    深度神经网络反向传播算法
    深度神经网络模型与前向传播
    Unity(八)脚本生命周期
  • 原文地址:https://www.cnblogs.com/wolfrickwang/p/3193732.html
Copyright © 2011-2022 走看看