开发者社区> 问答> 正文

VS2010使用zlog报错问题(write fail, errno[0])?报错

@难易 你好,想跟你请教个问题:

    我在windows下使用你的zlog时,报错,不能像正常测试那样输出正确的结果,errlog报错信息如下

12-18 11:27:29 ERROR (336:e:\winzlog-master\zlog\src\rotater.c:158) opened
12-18 11:27:29 ERROR (336:e:\winzlog-master\zlog\src\rule.c:445) write fail, errno[0]
12-18 11:27:29 ERROR (336:e:\winzlog-master\zlog\src\zlog.c:985) zlog_output fail, srcfile[e:\winzlog-master\zlog\test\test_profile.c], srcline[33]

我查看是rule的 WriteFIle函数最终返回时0 导致后续的报错,请问这是什么原因导致的,谢谢。

展开
收起
爱吃鱼的程序员 2020-06-14 18:51:39 536 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    zlog没有针对win设计,我对win下的开发也不熟悉,按照代码看

    if(write(STDOUT_FILENO,zlog_buf_str(a_thread->msg_buf),zlog_buf_len(a_thread->msg_buf))<0){zc_error("writefail,errno[%d]",errno);return-1;}



    是往stdout的文件描述符写数据失败了,我猜测是你关闭了标准输出?是否这样?

    报错之前控制台还打印了东西,不可能是关闭了标准输出吧

    引用来自“难易”的评论

    zlog没有针对win设计,我对win下的开发也不熟悉,按照代码看

    if(write(STDOUT_FILENO,zlog_buf_str(a_thread->msg_buf),zlog_buf_len(a_thread->msg_buf))<0){zc_error("writefail,errno[%d]",errno);return-1;}



    是往stdout的文件描述符写数据失败了,我猜测是你关闭了标准输出?是否这样?

    #if_MSC_VER 
    //longlStdOut=_fileno(stdout); 
    //
    longlStdOut=GetStdHandle(STD_OUTPUT_HANDLE); 
    #else 
    longlStdOut=STDOUT_FILENO; 
    #endif 

    引用来自“LL”的评论

    #if_MSC_VER 
    //longlStdOut=_fileno(stdout); 
    //
    longlStdOut=GetStdHandle(STD_OUTPUT_HANDLE); 
    #else 
    longlStdOut=STDOUT_FILENO; 
    #endif  谢谢,修改这句代码确实可以屏幕输出了
    2020-06-14 18:51:56
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载