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。还有一个样例是网络连接异常时。我们能够缓上一段时间再连接,而不必直接退出。

errno之我见的更多相关文章

  1. ERROR 1010 (HY000): Error dropping database (can't rmdir './test/', errno: 17)

    在删除数据库的时候报标题所示错误 mysql> drop database test; ERROR (HY000): Error dropping database (can't rmdir ' ...

  2. Linux ERRNO

    摘自Linux-3.18.20的头文件include/uapi/asm-generic/errno-base.h和include/uapi/asm-generic/errno.h: #define E ...

  3. C标准头文件<errno.h>

    声明了错误处理相关的宏 errno errno即error number,在程序启动时被设为0,当某个库函数运行出现错误的时候,会将相应的能表达错误类型的数字赋值给这个左值,这些数字往往有相应的宏来表 ...

  4. C 标准库系列之errno.h

    errno.h 提供了一个整数全局变量errno,当系统调用或者库函数的错误事件发生时可能会修改该值,指明错误的原因,该值可在任何需要的地方被修改:一般情况不为0的值表示出现了异常或者错误. errn ...

  5. macosx 10.11 python pip install 出现错误OSError: [Errno 1] Operation not permitted:

    Exception: Traceback (most recent call last): File , in main status = self.run(options, args) File , ...

  6. MongoDB 由于目标计算机积极拒绝,无法连接 2014-07-25T11:00:48.634+0800 warning: Failed to connect to 127.0.0.1:27017, reason: errno:10061

    转载自:http://www.cnblogs.com/xiaoit/p/3867573.html 1:启动MongoDB 2014-07-25T11:00:48.634+0800 warning: F ...

  7. errno

    关于errno有以下需要注意: 1  A common mistake is to do if (somecall() == -1) {                printf("som ...

  8. mysql errno 150

    mysql error Number 1005can't creat table'/test/#sql-640_1.frm'(errno:150)三种可能问题 外键和被引用外键类型不一样,比如inte ...

  9. 安装Cocoapods时候ERROR: While executing gem ... (Errno::EPERM)

    OS X 10.11 安装Cocoapods 出现问题的解决方法 今天尝试用 Cocoapods安装个第三方库.. 输入pod install, 发现 command not find. WTF! 估 ...

随机推荐

  1. 常见MIME类型

    Response对象通过设置ContentType使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据.  MIME类型格式:类别/子类别;参数 Co ...

  2. XXX全球 IP 地址库

    XXX全球 IP 地址库 Bulgaria 93.123.23.1 93.123.23.2 93.123.23.3 93.123.23.4 93.123.23.5 93.123.23.6 93.123 ...

  3. Service具体解释(二):Service生命周期

    < Service具体解释(一):什么是Service> < Service具体解释(二):Service生命周期> <Service具体解释(三):Service的使用 ...

  4. jquery ui autocomplete 模拟百度搜索自动提示

    直接上代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" ...

  5. ZH奶酪:putty远程登录Linux服务器非常慢

    11.pytty远程登录Linux服务器非常慢 http://www.it165.net/os/html/201209/3425.html 12.启动SSHD服务报错 http://blog.chin ...

  6. ASP.NET Page执行顺序如:OnPreInit()、OnInit()

    http://www.cnblogs.com/yeminglong/archive/2012/10/16/2725664.html 当页面进行回发时,如点击按钮,以上事件都会重新执行一次,这时的执行顺 ...

  7. 【DevOps】为什么我们永远疲于奔命?

    作者:范军 (Frank Fan) 新浪微博:@frankfan7   微信:frankfan7 在[DevOps]谁说大象不能跳舞?一文之后,本文对DevOps的理念作进一步探讨. 最近在读一本书& ...

  8. php之快速入门学习-7(运算符)

    PHP 运算符 本章节我们将讨论 PHP 中不同运算符的应用. 在 PHP 中,赋值运算符 = 用于给变量赋值. 在 PHP 中,算术运算符 + 用于把值加在一起. PHP 算术运算符 运算符 名称 ...

  9. Loadrunner错误-26601、-27492、-27727处理方法

    1.错误 -26601: 解压缩函数(wgzMemDecompressBuffer)失败,返回代码=-5 (Z_BUF_ERROR).inSize=0.inUse=0.outUse=0 用LR做压力测 ...

  10. An application icon

    The application icon is a small image which is usually displayed in the top left corner of the title ...