gpt4 book ai didi

C sleep 功能不起作用

转载 作者:太空狗 更新时间:2023-10-29 17:07:18 25 4
gpt4 key购买 nike

当包含 unistd.h 中的 sleep 函数时,程序会无限期挂起:

#include <stdio.h>
#include <unistd.h>

int main()
{
int i;
printf("0 ");
for(i = 1; i <20; ++i)
{
sleep(2);
printf("%d ", i);
}
printf("\n");

return 0;
}

sleep(2) 被注释掉时,其余的运行正常,有什么想法吗?

最佳答案

代码没有任何问题,但请注意,在许多情况下 printf 的输出是缓冲的,这意味着只有当您显式调用 fflush(stdout) 时,输出才会出现在控制台上,你打印一个换行符,或者缓冲区变满。由于直到最后才打印换行符,因此在 40 秒内您将在 for 循环中看不到任何内容(因为 printf 打印的内容仍在缓冲区中)。然后,当执行到 printf("\n") 时,所有内容都将在刷新缓冲区时立即打印出来。

因此,底线是:要么在调用 sleep 之前调用 fflush(stdout) 以确保输出缓冲区中没有任何内容,要么等待 40 秒然后你最终会在一个批处理中得到输出。

关于C sleep 功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13568388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com