当前位置:  技术问答>linux和unix

errno 问题

    来源: 互联网  发布时间:2016-08-03

    本文导语:  本帖最后由 yanjingfei 于 2010-02-04 12:53:44 编辑 请问errno因为某种错误被置成具体的值后,什么时候会重新复位为0(如果我的程序不退出)? 如果出现了错误,我自己把errno重新赋值为0有什么问题吗? | ...

本帖最后由 yanjingfei 于 2010-02-04 12:53:44 编辑
请问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查看具体的错误

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • unix 下的socket 函数调用失败会写 errno. 哪位有 errno 的值 和 其对应意义 的 对照表???
  • 怎样才能知道UNIX 下C语言的ERRNO都代表什么意思?到哪里去查,别外怎样在程序中截获这个errno我好做相应的处理。
  • 使用errno要不要加头文件?
  • 对于多线程而言,errno是不是不可靠啊?有什么解决办法没?
  • errno是个全局的马〉?还是一个线程一个?
  • linux多线程下可以直接使用errno吗?
  • sendto,总是返回-1,查看errno说是EPERM
  • 急问socket编程:程序中执行sendto()返回errno=101是什么原因啊
  • Linux 动态库 dlopen()失败,errno = 17, File exists
  • 请问:SCO UNIX下SOCKET的recv返回-1,errno=9?在线等·····
  • 请教高手,linux下使用libusb_submit_transfer,返回-1,errno = 16,如何解决?
  • 如何根据errno得到文件名
  • Connect函数在出现错误时返回-1,并且设置errno为相应的错误码
  • socket连接函数connect()返回错误 errno 为 115,什么原因?谢谢
  • linux 编写内核函数errno
  • kmod:failed to exec/sbin/modprobe -s -k binfmt-0000 ,errno=8
  • connect失败,errno为115.请问怎么解决?
  • 权限够却莫名其妙报strerror(errno)=Permission denied
  • [Solaris/AIX] read()调用失败,errno为ECONNECTIONRESET,请点解一下大致会是一些什么原因?
  • 怎么老是出现sys_errlist[]与errno sys_nerr 类型不同一 回复者必有分


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3