【问题标题】:Why is the sleep function being executed before anything?为什么要先执行睡眠功能?
【发布时间】:2021-12-27 20:44:07
【问题描述】:

当我执行下面的代码时,睡眠函数会在两个打印语句之前执行。

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

int main(void) {

  printf("before\n");

  sleep(4);

  printf("after");

  return 0;

}

所以而不是:before -&gt; *waits 4 seconds* -&gt; after
它执行:*waits 4 seconds* -&gt; before -&gt; after

【问题讨论】:

  • 我无法重现这个——如果我在终端中运行它,我会得到预期的行为。您是否将输出重定向到文件(这将导致块缓冲而不是行缓冲)?
  • 它给了我正确的顺序。

标签: c sleep


【解决方案1】:

根据您运行 C 程序的环境,有时printf 的输出会进入一个大缓冲区,而不是直接进入您的屏幕。尝试通过将以下行直接放在调用 printf 的每一行之后来刷新该缓冲区:

fflush(stdout);

【讨论】:

  • 谢谢!效果很好
猜你喜欢
  • 2021-04-12
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2011-08-15
  • 2021-01-15
相关资源
最近更新 更多