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

perror和strerror怎么获取的错误不一致.

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

    本文导语:  例如代码如下: if (connect(sock, (struct sockaddr *)s_addr, sizeof(struct sockaddr_in)) sin_addr));    return (-1); } 然后我们可以看到错误信息是: connect failure: Network is unreachable          1 connect failure: Illegal seek      ...

例如代码如下:
if (connect(sock, (struct sockaddr *)s_addr, sizeof(struct sockaddr_in)) sin_addr));
   return (-1);
}

然后我们可以看到错误信息是:
connect failure: Network is unreachable          1
connect failure: Illegal seek                    2
Unable to connect to remote host (210.75.23.149)


红色的1,2都是获取错误信息为什么会出现,两个错误信息不一致呢.
纳闷了.....谁知道怎么回事吗????

|
Perror 最大的一个弊病是在调用后,很可能会把 errno 设置成 ESPIPE( 对应值为 29,错误描述为”Illegal seek”),影响后面 errno 的使用,这也是它线程不安全的原因之一,我们可以通过下面的实验得出此结论。

 说明:宏 PERROR_STRERROR 对应的代码块使用 perror 函数来捕获系统调用 fopen() 得到的错误,然后使用 strerror 函数来查看 perror 函数是否改变 errno 的值。如果两者输出结果不一致,则说明 errno 值被 perror 函数更改了。 
以上文字来自于http://tech.ddvip.com/2008-11/122654049391936_5.html

    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • 如何让perror()函数打印中文错误信息?
  • perror()是否线程安全?
  • pthread_join返回非0,但 perror 提示success
  • udp socket recvfrom偶尔会返回-1,perror打印出的提示是"recvfrom: Resource temporarily unavailable"
  • udp socket通讯,recvfrom()一直返回-1,perror提示"recvfrom: Bad address"
  • perror会修改errno?


  • 站内导航:


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

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

    浙ICP备11055608号-3