Linux / Windows中的sleep()/ Sleep()行为

时间:2014-01-29 09:46:08

标签: c linux

#include <stdlib.h>

int main()
{
    printf("\nHello");
    sleep(5);
    printf("\nLinux");
}

在我的期望中,它应该是:

PRINT Hello --- WAIT 5 SECS ---> PRINT Linux

但实际上它会是这样的:

WAIT 5 SECS --> PRINT Hello --> PRINT Linux

为什么?如何让我的程序成为第一个(按照我的期望)?

为什么我的代码可以在Win32控制台上运行?

2 个答案:

答案 0 :(得分:4)

您的流是行缓冲的,因为您没有使用\n结束字符串,请使用fflush将其刷新。

将您的计划更改为:

int main()
{
    printf("\nHello");
    fflush(stdout);
    sleep(5);
    printf("\nLinux");
}

答案 1 :(得分:1)

输出被缓冲,直到换行才打印。

尝试:

printf("\nHello\n");
sleep(5);
printf("Linux");