C/C++linux C 中sleep “卡住”的问题

Posted liangchaoxi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++linux C 中sleep “卡住”的问题相关的知识,希望对你有一定的参考价值。

目录

 

​linux环境下C语言中sleep的问题​

​Linux下的延迟函数sleep()​



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++头文件梳理,看完这篇再也不会搞糊涂头文件了!

如果包含 time.Sleep,Goroutine 不会执行

优化将一个数组插入另一个数组 C/C++

Java之sleep和wait

Java之sleep和wait