|
发表于 2005-4-21 12:18:28
|
显示全部楼层
printf函数遇到\n就立即输出换存内容,但通常一次printf也会输出缓存,但是有一段等待时间,虽然我们看上去很快.sleep使程序在printf函数调用之后立即进入睡眠状态,printf无法在等待一段虽然短时间之后再输出缓存内容.
例如printf调用(不带\n)之后要等待0.004秒才自动输出缓存内容,但由于等待是异步进行的,而printf调用之后立即有sleep调用产生,导致printf无法等到0.004妙而是进入睡眠,以后也再自动延续这此未完成的等待,同时程序设中没有\n 输出,所以直到程序结束也没有输出.
再试验一下,把 sleep语句放到printf语句之前,那末所有 输出会在程序结束之前一次性输出(要把500改为5,这样可以减少等待时间的)的.
实验一下:--------------
#include <stdio.h>
#include <unistd.h>
main()
{
int i;
for(i=0;i<5;i++)
{
sleep(1);
printf("hello");
}
}
是不是很有意思. |
|