推荐使用std::this_thread::sleep_for(C++11起),基于和,跨平台、线程安全、支持毫秒/微秒/纳秒等精度;Windows用Sleep(),Linux/macOS用nanosleep();避免system("pause")等非标准方式。

在C++中让程序暂停或休眠,主要靠操作系统提供的睡眠函数,标准C++库本身不直接提供跨平台的sleep函数,但可通过头文件中的std::this_thread::sleep_for实现便携、安全的休眠,推荐优先使用;传统C风格的sleep或usleep等函数则依赖平台,需谨慎处理。
用 std::this_thread::sleep_for(推荐,C++11起)
这是现代C++最标准、最可移植的方式,基于和,支持毫秒、微秒、秒等多种时间单位,且不会阻塞整个进程(只挂起当前线程)。
示例:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
#include <iostream>
#include <thread>
#include <chrono>
int main() {
std::cout <ul>
<li>支持任意精度:<code>milliseconds(500)</code>、<code>microseconds(1000)</code>、<code>nanoseconds(1)</code>
</li>
<li>线程安全,适用于多线程环境</li>
<li>无需额外链接库,纯标准C++</li>
</ul>
<h3>Windows平台:Sleep()(大小写敏感)</h3>
<p>Windows API提供<code>Sleep()</code>(注意首字母大写),参数单位为毫秒,需包含<code><windows.h></windows.h></code>。</p>
<p>示例:</p>
<pre class="brush:php;toolbar:false;">#include <iostream>
#include <windows.h>
int main() {
std::cout <ul>
<li>仅限Windows,跨平台项目中应避免直接使用</li>
<li>传入0时会主动让出当前时间片,但不真正“休眠”</li>
<li>若需条件编译,可用<code>#ifdef _WIN32</code>包裹</li>
</ul>
<h3>Linux/macOS:usleep() 或 nanosleep()</h3>
<p>POSIX系统常用<code>usleep()</code>(微秒级,已标记为过时)或更精确稳定的<code>nanosleep()</code>(纳秒级,推荐)。</p>
<p>示例(nanosleep):</p>
<pre class="brush:php;toolbar:false;">#include <iostream>
#include <ctime>
#include <cerrno>
int main() {
struct timespec ts = {0, 500000000}; // 0秒 + 5亿纳秒 = 0.5秒
nanosleep(&ts, nullptr);
std::cout <ul>
<li>
<code>usleep(500000)</code> 等价于休眠500毫秒,但已被POSIX弃用</li>
<li>
<code>nanosleep</code> 更可靠,能处理被信号中断的情况(返回-1并设errno)</li>
<li>需链接<code>-lrt</code>(某些旧系统可能需要,现代glibc通常不用)</li>
</ul>
<h3>不推荐的做法:system("pause") 或 getch()</h3>
<p>这些不是真正的“休眠”,而是等待用户输入,行为不可控,且严重依赖终端环境,无法用于后台服务或自动化脚本。</p>
<p>例如:</p>
<ul>
<li>
<code>system("pause")</code> 仅Windows cmd有效,Linux下报错</li>
<li>
<code>getch()</code> 来自<code><conio.h></conio.h></code>,非标准,几乎只在旧Turbo C或部分Windows扩展中存在</li>
<li>它们会阻塞并等待<a style="color:#f60; text-decoration:underline;" title="键盘事件" href="https://m.php.cn/zt/37005.html" target="_blank">键盘事件</a>,不属于时间控制范畴</li>
</ul></cerrno></ctime></iostream>
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!










