📜  c sleep 毫秒 - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:39:39.763000             🧑  作者: Mango

C语言中的 sleep 函数

sleep 是 C 语言提供的一个函数,它能让当前进程挂起一定时间(以秒为单位),可用于实现程序的等待或节流控制。但是在实际应用中,有时候需要更精确的等待时间,比如毫秒级别的等待。本文将介绍 C 语言中如何实现毫秒级别的睡眠。

使用 sleep 函数

先来看一下 sleep 函数的基本用法:

#include <unistd.h>

unsigned int sleep(unsigned int seconds);

函数接收一个 unsigned int 类型的参数 seconds,表示要挂起的时间,单位为秒。函数返回值为 0 或剩余未休眠的时间(秒),如果在挂起过程中被信号打断,则返回未被休眠的时间。

下面是一个简单的使用例子:

#include <stdio.h>
#include <unistd.h>

int main() {
    printf("Start...\n");
    sleep(5);
    printf("End.\n");
    return 0;
}

执行上面的代码,会在控制台输出 "Start...",延迟 5 秒后输出 "End."。

使用 usleep 函数

但是 sleep 函数只能实现秒级别的睡眠,如果要实现毫秒级别的等待,就需要使用 usleep 函数。usleep 函数的基本用法如下:

#include <unistd.h>

int usleep(useconds_t usec);

该函数接收一个 useconds_t 类型的参数 usec,表示要挂起的时间,单位为微秒。函数返回值为 0 或 -1,如果在挂起过程中被信号打断,则返回 -1。

下面是一个使用 usleep 实现毫秒级别的等待的例子:

#include <stdio.h>
#include <unistd.h>

int main() {
    printf("Start...\n");
    usleep(3000); // 等待 3 毫秒
    printf("End.\n");
    return 0;
}

执行上面的代码,会在控制台输出 "Start...",延迟 3 毫秒后输出 "End."。

总结

本文介绍了 C 语言中如何使用 sleep 函数和 usleep 函数实现等待和节流控制。需要注意的是,usleep 函数是非标准的函数,在一些操作系统中可能未提供或者提供了自己实现的版本。如果需要在不同系统中移植代码,建议使用标准函数组合实现毫秒级别的等待。