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

news2024/11/23 3:00:09

🦄个人主页:修修修也

🎏所属专栏: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秒,转换成参数毫秒就是1000ms
		n--;
	}
	printf("\n");
}

int main()
{
	countdown(10);//调用倒计时小程序函数,并传入倒计时秒数:10s

	return 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);//参数是秒,所以我们直接传1
		n--;
	}
	printf("\n");
}

int main()
{
	countdown(10);//调用倒计时小程序函数,并传入倒计时秒数:10s

	return 0;
}

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

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

        小tips:

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

结语

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

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

相关文章推荐

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

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

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

【Linux】基本指令(下)

【Linux】基本指令(中)

【Linux】基本指令(上)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2072729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

连Llama3都坐冷板凳,市场正在抛弃开源模型

Llama3被亚马逊、微软“打入冷宫”&#xff0c;罪在开源&#xff1f; 俗话说&#xff0c;是骡子是马&#xff0c;牵出来溜溜就知道。 最近&#xff0c;开源大模型届的“汗血宝马”Llama3&#xff0c;似乎要露馅了。 据美国媒体The Information报道&#xff0c;在全球最大云计…

2024.8.24

130124202408241009 DATE #:20240824 ITEM #:DOC WEEK #:SATURDAY DAIL #:捌月廿壹 TAGS < BGM "风屿&#xff0d;&#xff0d;闫东炜" > < theme oi-graph theory > < [NULL] > < [空] > < [空] > 与风为名&#xff0c;屿之齐鸣。…

MFC工控项目实例之六CFile添加菜单栏

本程序基于前期我的博客文章《MFC工控项目实例之五CFile类读写系统参数》 添加两个对话框如下 具体添加菜单栏参考我的博客文章MFC_ CFile类实现下拉菜单读写实例&#xff08;源码下载&#xff09; 这里给出相关代码 在 SEAL_PRESSURE.h文件中添加 #include <afxtempl.…

github源码指引:共享内存、数据结构与算法

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码目录&#xff1a;shmfc 相…

一键拼图神器CollageIt,让你的照片秒变艺术大作!

前言 嘿&#xff0c;你是否曾对着满屏的照片发愁&#xff0c;想要快速整理成精美的作品集&#xff0c;却又被繁琐的排版搞得头昏脑涨&#xff1f;如果有一款神器&#xff0c;能让你一键搞定这些烦恼&#xff0c;轻松提升办公效率&#xff0c;是不是觉得升职加薪的曙光就在眼前…

Python 进度条tqdm应用记录

tqdm 简介 tqdm 是一个非常流行的 Python 库&#xff0c;用于快速添加进度条到循环中。它可以方便地集成到脚本中&#xff0c;并且支持多种类型的迭代器。 安装 首先确保你安装了 tqdm。如果还没有安装&#xff0c;可以通过 pip 安装它&#xff08;如果要在 jupyter noteboo…

游戏开发设计模式之单例模式

单例模式&#xff08;Singleton Pattern&#xff09;是一种常见的设计模式&#xff0c;其主要目的是确保一个类在整个程序的生命周期中只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。在游戏开发中&#xff0c;单例模式具有广泛的应用和重要的作用。 单例模式的…

如何评估Redis的性能

如果系统中出现了大 key、热 key 等&#xff0c;往往会导致 Redis 变慢&#xff0c;但是这个慢该如何界定&#xff1f;多久算慢&#xff1f;1秒还是3秒&#xff1f; 这个肯定是没有标准答案&#xff0c;因为这个和你的硬件设备有关。 硬件差一些&#xff0c;平时响应时间都是…

OSPF路由原理详解与关键点

目录 一. OSPF简介: 二. OSPF原理描述: 三. OSPF的核心内容: 四. OSPF的邻居关系和邻接 五. LSA在各区域中传播的支持情况 一. OSPF简介: 开放式最短路径优先OSPF&#xff08;Open Shortest Path First&#xff09;是IETF组织开发的一个基于链路状态的内部网关协议&…

打造编程学习的知识宝库:高效笔记与整理技巧

在编程的海洋中&#xff0c;知识的深度和广度都是难以估量的。要想在这片海洋中航行而不迷失方向&#xff0c;一个高效的笔记系统是不可或缺的。本文将探讨如何建立一个既能快速记录又易于回顾的笔记系统&#xff0c;以及如何在繁忙的学习中保持笔记的条理性。 目录 一、确定笔…

数三角形(二)》-筛除法斜线结论

算法思路&#xff1a; 1、一个直观的思路是筛除法&#xff0c;即&#xff1a;答案总数-三点共线的种数 总数易求得&#xff0c;为组合数C((n1)*(m1),3)&#xff0c;考虑到n、m数值范围&#xff0c;考虑用long long。 2、三点共线的情况有&#xff1a; &#xff08;1&#xff09…

Linux驱动学习之按键读取

按键读取我们需要实现read函数&#xff0c; read 函数的 第二个参数被__user 修饰&#xff0c;原则上在内核层我们不能直接访问&#xff0c;需要调用 copy_to_user()这个函数&#xff0c;从内核获取数据到上层。 copy_to_user(void __user volatile * to, const void * from,…

C语言笔试题(指针、数组、整数在内存中的存储、结构体......)

文章目录 1.选择题2.代码题2.1 模拟实现strncat2.2 模拟实现strncpy2.3 编写判断大小端程序2.4 模拟实现atoi2.5 BC38 变种水仙花数2.6 BC98 序列中删除指定数字 今天我们一起来看一些题目 1.选择题 解析如下&#xff1a; 正确选项&#xff1a;B A.参数错误&#xff1b;D.返回…

什么是Redis集群的脑裂问题?

目录 一、脑裂的发生 二、脑裂的危害 三、如何避免脑裂&#xff1f; 四、能彻底解决脑裂吗&#xff1f; 所谓脑裂&#xff0c;就像他的名字一样&#xff0c;大脑裂开了&#xff0c;一般来说就是指一个分布式系统中有两个子集&#xff0c;然后每个子集都有一个自己的大脑(Le…

【Excal】And函数

奖金评定说明 业绩低于6000&#xff0c;奖金为100 业绩大于等于6000且小于10000&#xff0c;奖金为200 业绩大于等于10000&#xff0c;奖金为500 然后按回车健 下拉填充

BurpSuite2024.7.3专业版

前言 Burp Suite是一个无需安装软件&#xff0c;下载完成后&#xff0c;直接从命令行启用即可。开箱即可使用支持LInux/Windows/Mac 01更新介绍 2024.7.13版本界面大改动此版本引入了重大的性能升级、对拦截功能的重大增强&#xff0c;以及在审计项目表中新增了扫描插入点列。…

【Nature】在科研中应用ChatGPT:如何与数据对话

随着人工智能技术的迅猛发展&#xff0c;大型语言模型&#xff08;LLMs&#xff09;正逐渐成为科研领域的一种创新工具。这些模型通过自然语言处理技术&#xff0c;使得研究人员能够以直观的方式与数据进行交互&#xff0c;从而简化了数据分析和解释的过程。在《自然》杂志2024…

103.二叉树的锯齿形层序遍历

1.题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,nul…

Unity-可分组折叠的Editor

Unity-可分组折叠的Editor &#x1f957;功能介绍&#x1f36d;用法 &#x1f957;功能介绍 在序列化的字段上标记特性:[FoldoutGroup(“xxx”)]&#xff0c;inspector上就会被分组折叠显示。 &#xff08;没有被指定的字段自动放到Default组中&#xff09; 传送门&#x1f30…

如何用Java SpringBoot和Vue搭建高效的OA办公管理系统?

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…