我只是用Kernighan和Ritchie的书学习C语言; 我在第四章的基础知识(函数).前几天我对这个sleep()
功能感到好奇,所以试着像这样使用它:
#include#include int main(void) { printf(" I like cows."); sleep(5); return 0; }
问题是程序的输出,它看起来像sleep()
第一个然后printf()
,换句话说,它等待五秒然后打印字符串.所以我想,也许程序变得sleep()
如此之快,以至于它不会让printf()
我的工作按照我的意愿完成,即打印字符串然后再睡觉.
如何显示字符串然后让程序进入睡眠状态?编译器是OpenBSD 4.3中的GCC 3.3.5(propolice).
PS我不知道你如何正确地放置预处理器线.
printf()
写入stdout
(默认输出流),通常是行缓冲.sleep
调用时间不会刷新缓冲区,因此不会显示任何内容,当程序退出所有流时会自动刷新,这就是它在退出之前打印的原因.打印换行符通常会导致流刷新,或者您可以使用以下fflush
函数:
int main(void) { printf(" I like cows.\n"); sleep(5); return 0; }
要么:
int main(void) { printf(" I like cows."); fflush(stdout); sleep(5); return 0; }
如果要打印到不是行缓冲的流,如果stdout
重定向或者您正在写入文件,可能就是打印新行可能不起作用.在这种情况下,fflush
如果您希望立即写入数据,则应使用.