zoukankan      html  css  js  c++  java
  • errno之我见

    Errno能帮我们找到系统函数的错误信息。

    比方open函数,假设正常返回时,其返回值是一个非负的整数。

    异常时会返回-1。同一时候该系统函数会设置errno的值。让我们能够了解错误的原因。

     

    Errno的正确使用方法是,首先要明白系统函数调用异常(比方返回-1或NULL)。然后再去推断errno的值。我们不能直接去推断errno的值来断定系统函数调用是否发生了一场。

    由于errno值是不会被清零,它仅仅是在发生异常的时候才会赋予对应的值。当然我们也不必自己对其清零。

     

    另外。errno是线程安全的。能够理解成每个线程均有一个errno的值,它们相互之间没有干扰。

     

    有两个系统函数能够让错误信息更加的readable,例如以下所看到的:

    #include <string.h>

    char *strerror(int errnum);

    Returns: pointer to message string

     

    #include <stdio.h>

    void perror(const char *msg);

     

    通过推断errno的值能够使得我们的系统更加的健壮。一个样例是有些操作系统会在slow system call时处理signal后不会继续block在之前的系统函数中。同一时候设置errno的值为EINTR。还有一个样例是网络连接异常时。我们能够缓上一段时间再连接,而不必直接退出。
  • 相关阅读:
    【BZOJ1135】[POI2009]Lyz
    【BZOJ5110】[CodePlus2017]Yazid 的新生舞会
    「BZOJ2882」工艺
    【BZOJ3626】[LNOI2014]LCA
    [Wc]Dface双面棋盘()
    【BZOJ3307】雨天的尾巴
    [NOI2012]骑行川藏
    【BZOJ4919】[Lydsy六月月赛]大根堆
    bzoj4184
    3237: [Ahoi2013]连通图 线段树分治
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6707657.html
Copyright © 2011-2022 走看看