分享

后台进程中printf导致的errno=5的错误(摘)

 gljin_cn 2016-06-29
原来的代码是这样的(send调用的情况类似):
s32 len = recv( m_socket, data, len, 0 );
// printf("recv = %d\n", len);
if( len==-1 && (errno==EAGAIN || errno==EWOULDBLOCK) )
{
break;
}
recv/send之后有一行printf,是为了调试而新增的。
进程退到后台执行后,程序调用printf会产生errno=5的错误。
而socket在调用recv返回EAGAIN错误后,因为又调用了printf导致errno被修改了,
导致后面的判断条件认为是socket收发数据异常而断开了连接
所以就出现了上面的情况。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多