为什么输出流只在我使用sleep()函数时被缓冲?

时间:2014-04-13 17:52:54

标签: c sleep

考虑以下代码

#include <stdio.h>

int main()
{
    while(1)
    {
        sleep(1);
        printf("X");
    }

    return 0;
}

输出无效,直到缓冲区溢出并随后由系统自动刷新。

为什么在这种情况下不会缓冲?:

#include <stdio.h>

int main()
{
    while(1)
    {
        printf("X");
    }

    return 0;
}

sleep()函数似乎在这里有一些隐藏的效果。

我对缓冲区的概念不熟悉,因此欢迎任何有关我潜在误解的其他信息或说明。

1 个答案:

答案 0 :(得分:4)

输出仍然是缓冲的,但缓冲区的溢出(以及冲洗)在第二个例子中经常发生,因此无法注意到它。

如果你在比今天的千兆赫PC更慢的系统上运行它,你肯定会注意到差异。