C/C++linux C 中sleep “卡住”的问题
Posted liangchaoxi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++linux C 中sleep “卡住”的问题相关的知识,希望对你有一定的参考价值。
目录
printf默认是输出到标准输出,而标准输出默认使用的是行缓冲。
在sleep之前fflush(stdout)强制刷缓冲,或者在程序开始使用setbuf(stdout, NULL)禁用缓冲
当然,假如你有足够的耐心,大约过几个小时后,缓冲区终于满了,你会看到效果的。
————————————————
原文链接:https://blog.csdn.net/sidely/article/details/40402511
Linux下的延迟函数sleep()
置顶 nigulasi_dawei 2017-06-05 11:22:37 54570 收藏 23
文章标签: 函数 linux c语言
版权
Linux下c语言中的延迟函数sleep()的用法
#include <stdio.h>
int main()
{
printf("hello\\n");
sleep(1); //延迟1秒
printf("world\\n");
return 0;
}
windows下 sleep(1000) 代表延迟1秒,因为sleep的参数为毫秒,
而在Linux下 sleep的参数为秒,所以延迟1秒为 sleep(1)。
#include <stdio.h>
int main()
{
printf("hello"); /*去掉转义字符\'\\n\'*/
sleep(1);
printf("world\\n");
return 0;
}
1秒后
当我们去掉转义字符‘\\n’,不再执行任何转义操作后,延迟函数sleep不再在语句间延迟,而是变成延迟整个程序。
借此我们来认识一下printf函数:
printf是一个行缓冲函数,先写到缓冲区,满足条件后,才将缓冲区刷到对应文件中,刷缓冲区的条件如下:
1 缓冲区填满。
2 写入的字符中有‘\\n’ , ‘\\r’。
3 调用fflush手动刷新缓冲区。
4 调用scanf要从缓冲区中读取数据时,也会将缓冲区内的数据刷新。
这里我们通过fflush()函数刷新缓存
include <stdio.h>
int main()
{
printf("hello");
fflush(stdout); //强制刷新缓存,输出显示
sleep(1);
printf("world\\n");
return 0;
}
以上是关于C/C++linux C 中sleep “卡住”的问题的主要内容,如果未能解决你的问题,请参考以下文章
在C++里执行VBS 如何执行VBS命令啊 比如Wscript.Sleep 5000 '
linux下C/C++头文件梳理,看完这篇再也不会搞糊涂头文件了!