C陷阱与缺陷 读后: 库函数成功时仍可能设置errno
时间:2010-08-01 来源:slimzhao
我关于errno的知识是:
* 它是库函数中定义的, 一个int, 一个lvalue, 可以被赋值.
* 如果函数返回成功, 它未必会被清0.
* 如果库函数返回失败, 它可能被设置一个非0的错误码, 也可能不会, 取决于具体的库函数.
但该书中指出, 即使库函数成功, 它仍可能被显式地设置一个非0的错误码. 这点是我没料到的, 作者的举例是fopen函数在内部可能会检测一个目标文件存在与否, 而检测函数可能会失败, 失败时就会设置errno, 但检测函数失败并不影响fopen本身的成功返回.
* 它是库函数中定义的, 一个int, 一个lvalue, 可以被赋值.
* 如果函数返回成功, 它未必会被清0.
* 如果库函数返回失败, 它可能被设置一个非0的错误码, 也可能不会, 取决于具体的库函数.
但该书中指出, 即使库函数成功, 它仍可能被显式地设置一个非0的错误码. 这点是我没料到的, 作者的举例是fopen函数在内部可能会检测一个目标文件存在与否, 而检测函数可能会失败, 失败时就会设置errno, 但检测函数失败并不影响fopen本身的成功返回.
相关阅读 更多 +