当前位置: 技术问答>linux和unix
errno 问题
来源: 互联网 发布时间:2016-08-03
本文导语: 本帖最后由 yanjingfei 于 2010-02-04 12:53:44 编辑 请问errno因为某种错误被置成具体的值后,什么时候会重新复位为0(如果我的程序不退出)? 如果出现了错误,我自己把errno重新赋值为0有什么问题吗? | ...
如果出现了错误,我自己把errno重新赋值为0有什么问题吗?
|
你并不需要以每次调用前去重新置errno为0, 调用一个接口是不是出错也不是根据errno是否为0来判断,每个接口都有一个返回值,只有当返回值指示有错误发生后再去检查errno才是有意义的。
|
使用一个函数前请先man一下,strtol是C库的函数,跟errno完全没有关系。测试errno有何意义?
|
这个通常不需要,只有返回错误了才需要查看errno。
只有少数几个库函数,比如strtol无法转换时会返回0并设置 errno 为 EINVAL
转换后的数超过long表示范围时返回 LONG_MAX 或 LONG_MIN并设置errno 为 ERANGE
在这种特殊情况下由于 LONG_MAX, 0, LONG_MIN都是合法的long返回值,比较好的方法就是
先清除errno,然后调用函数,根据errno就能判断是否出错。
|
可以clear恢复为0, 你重新赋值为0不影响什么阿,除非你有些需要用到errno判断的地方,例如中断调用
|
及时你的系统调用没有出现任何错误,也不会将errno复位0就是说只能自己手动复位,用的时候要先检查返回值,如果返回值预示着出错再去检查errno查看具体的错误