当前位置: 首页 > news >正文

【C/C++】Sleep()函数详解

🦄个人主页:修修修也

🎏所属专栏:Linux

⚙️操作环境:Visual Studio 2022 / Xshell (操作系统:CentOS 7.9 64位)


目录

📌Windows系统下Sleep()函数简介

🎏函数功能

🎏函数参数

🕹️DWORD milliseconds

🎏函数返回值

🎏函数头文件

🎏Sleep()函数的具体使用示例

📌Linux系统下sleep()函数简介

🎏函数功能

🎏函数参数

🕹️unsigned int seconds

🎏函数返回值

🎏函数头文件

🎏sleep()函数的具体使用

结语


📌Windows系统下Sleep()函数简介

        我们先来看一下百度百科网站上Sleep()函数的基本信息:

🎏函数功能

        可以看到,Sleep()函数的功能是:使计算机程序(进程, 任务或线程)进入休眠,使其在一段时间内处于非活动状态。

🎏函数参数

        该函数一共有1个参数,如下:

void Sleep(DWORD milliseconds);

🕹️DWORD milliseconds

        函数参数的类型是DWORD(实质是unsigned long, 即无符号长整型), 它的作用是接受一个以毫秒为单位的参数,表示程序暂停的时间

🎏函数返回值

        函数的返回值类型是void, 它表示此函数没有返回值。调用后,程序将暂停指定的时间。

🎏函数头文件

        该函数包含在头文件<windows.h>中。


🎏Sleep()函数的具体使用示例

        Sleep()函数的使用场景是:当我们想人为在程序运行过程中将程序休眠一段时间时,我们可以使用Sleep()函数来实现这一诉求.

        如下,我们使用Sleep()函数完成一个简单的倒计时小程序:

        给Sleep()函数传入:1000(1000ms,即要暂停1s时间)

#include<stdio.h>
#include<windows.h>void countdown(int n)//设定参数,接收一个整数,作为倒计时的秒数
{while (n >= 0){printf("%-2d\r", n);fflush(stdout); //使用回车打印后休眠,要手动清空字符缓冲区Sleep(1000);//我们想要Sleep()函数休眠1秒,转换成参数毫秒就是1000msn--;}printf("\n");
}int main()
{countdown(10);//调用倒计时小程序函数,并传入倒计时秒数:10sreturn 0;
}

        在vs2022编译器中运行查看结果:

        可见Sleep()函数成功的将每次打印的秒数中间间隔了1s


📌Linux系统下sleep()函数简介

        我们先来看一下百度百科网站上的sleep()函数的基本信息(此处基本介绍与windows相同, 两者具体区别见下方函数参数及返回值):

🎏函数功能

        可以看到,sleep()函数的功能是:使计算机程序(进程, 任务或线程)进入休眠,使其在一段时间内处于非活动状态。

🎏函数参数

        该函数一共有1个参数,如下:

unsigned int sleep(unsigned int seconds);

🕹️unsigned int seconds

        函数参数的类型是unsigned int(即无符号整型), 它的作用是接受一个以秒为单位的参数,表示程序暂停的时间。

🎏函数返回值

        函数的返回值类型是unsigned int, 它表示在指定时间内未能睡眠的秒数(例如,因信号中断)。如果返回值为0,则表示指定的时间已完全睡眠。

🎏函数头文件

        该函数包含在头文件<unistd.h>中。


🎏sleep()函数的具体使用

        sleep()函数的使用场景是:当我们想人为在程序运行过程中将程序暂停一段时间时,我们可以使用sleep()函数来实现这一诉求.

        如下,我们使用sleep()函数完成一个简单的倒计时小程序:

        给sleep()函数传入:1(1s,即要暂停1s时间)

#include<stdio.h>
#include<unistd.h>void countdown(int n)//设定参数,接收一个整数,作为倒计时的秒数
{while (n >= 0){printf("%-2d\r", n);fflush(stdout); //使用回车打印后休眠,要手动清空字符缓冲区sleep(1);//参数是秒,所以我们直接传1n--;}printf("\n");
}int main()
{countdown(10);//调用倒计时小程序函数,并传入倒计时秒数:10sreturn 0;
}

        在Xshell (操作系统:CentOS 7.9 64位)中运行查看结果:

        可见sleep()函数成功的将每次打印的秒数中间间隔了1s

        小tips:

  • 在Linux的sleep()函数中,如果在休眠期间有信号到达函数可能会提前返回,导致实际睡眠时间少于所请求的时间。
  • 在Windows中,Sleep()通常不会被信号中断,适合需要精确睡眠的场景。

结语

希望这篇关于Sleep()函数的博客能对大家有所帮助,欢迎大佬们留言或私信与我交流.

学海漫浩浩,我亦苦作舟!关注我,大家一起学习,一起进步!

相关文章推荐

【Linux】手把手教你从零上手gcc/g++编译器

【Linux】手把手教你从零上手Vim编辑器

【Linux】一文带你彻底搞懂权限

【Linux】基本指令(下)

【Linux】基本指令(中)

【Linux】基本指令(上)


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • GPIO(通用输入/输出)、中断(hal库)
  • Chrome 中的 RCE 会在 JIT 编译器中产生不正确的副作用
  • 【Linux】匿名管道
  • TypeSript8 泛型学习
  • 【算法进阶1】贪心算法、背包问题(0-1背包、分数背包)、拼接最大数字问题、活动选择问题
  • 6 - Linux PXE高效批量网络装机
  • CacheLoader和装饰器模式
  • 无刷电机、有刷电机和步进电机的区别
  • 初赛笔记1
  • OD C卷 - 项目排期/最少交付时间
  • 新手学习打怪之编译安装LAMP和LNMP
  • PCL 点云ISS关键点提取算法
  • 《陈天奇:机器学习科研的十年》阅读笔记
  • SP: leopold (v1.2)
  • 《通义千问AI落地—下》:WebSocket详解
  • Apache的80端口被占用以及访问时报错403
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • HTTP请求重发
  • javascript数组去重/查找/插入/删除
  • jquery ajax学习笔记
  • magento 货币换算
  • Objective-C 中关联引用的概念
  • PHP 小技巧
  • Python学习笔记 字符串拼接
  • QQ浏览器x5内核的兼容性问题
  • ReactNative开发常用的三方模块
  • spring boot 整合mybatis 无法输出sql的问题
  • vue2.0项目引入element-ui
  • 第十八天-企业应用架构模式-基本模式
  • 读懂package.json -- 依赖管理
  • 工作手记之html2canvas使用概述
  • 诡异!React stopPropagation失灵
  • 前端性能优化——回流与重绘
  • 入门级的git使用指北
  • 微服务入门【系列视频课程】
  • 学习HTTP相关知识笔记
  • 怎么将电脑中的声音录制成WAV格式
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $NOIp2018$劝退记
  • (1)(1.11) SiK Radio v2(一)
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)php投票系统 毕业设计 121500
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十一)图像的罗伯特梯度锐化
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .net 7 上传文件踩坑
  • .net core docker部署教程和细节问题
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net Core 微服务之Consul(三)-KV存储分布式锁
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?