zoukankan      html  css  js  c++  java
  • APUE学习之出错处理

         当UNIX函数发生错误时,通常会返回一个负值,而且整形变量errno通常被设置为具有特定信息的值。
     
         errno是全局变量,仅当函数出错才有被改变。对待errno,应注意两条规则
              1:如果没有出错,其值不会被例程清除,也就是说,当且仅当函数出错时,马上检查errno的值才有意义。
              2:任何函数都不会将errno的值置为0。
     
         C标准定义了两个函数,用于打印出错信息:char *strerror(int errnum)和void perror(const char *msg)。
     
         strerror函数将errnum(通常就是errno的值)映射为出错消息字符串,并返回该字符串的指针。
         perror函数基于errno的当前值,在标准错误上产生一条出错消息然后返回。
     
    例子:
         #include "apue.h"
         #include <errno.h>
     
         int main(int argc, char **argv)
         {
              fprintf(stderr, "EACCES: %s ", strerror(EACCES));
              errno = ENOENT;
              perror(argv[0]);
              return 0;
         }
     
         ./a.out
         EACCES: Permission denied
         ./a.out: No such file or directory
  • 相关阅读:
    自定义 ListView
    linux IO重定向
    Facebook开源C++组件库Folly
    在vi按了ctrl+s后
    让Erlang服务器后台运行
    mysql innodb 性能相关参数
    linux 网卡驱动升级
    kernel panic
    32位Linux下使用2G以上大文件的几个相关宏的关系
    CentOS安装erlang
  • 原文地址:https://www.cnblogs.com/shenlinken/p/5760424.html
Copyright © 2011-2022 走看看