分享

stdout&stderr引发的思考

 kylin_1983 2014-04-24
开始一直输出hello-std-err,当stdout的缓冲区满后,一次输出hello-std-out,接着重复以上动作。
原因是:stdout和stderr是不同的设备描述符,stdout是块设备,而stderr不是。对于块设备,只有遇到下面几种情况才会输出:1)遇到回车,2)缓冲区满,3)flush被调用。而stderr不会,stderr是标准错误,直接输出。
下面说以下几种设备的缓冲:
标准输入,输出是行缓冲,Line buffering is typically used on a stream when it refers to a terminal: standard input and standard output, for example.
举例来说就是你,printf(stdout, "xxxx"); 而不是printf(stdout, "xxxx\n"),前者会憋住,直到遇到新行才会一起输出
printf(stderr, "xxxxx"),不管有么有\n,都输出。

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多