【发布时间】:2012-11-26 15:54:32
【问题描述】:
当包含来自unistd.h 的睡眠功能时,程序无限期挂起:
#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("0 ") 行没有运行,所以这不是 sleep() 的时间问题。
-
缓冲?如果你用换行符结束你的打印字符串会发生什么?编辑:按预期工作,静默 38 秒,然后打印数字。
-
如果您在每次迭代中都执行
fflush(stdio);会发生什么?