1. 延时函数简介

Linux 中常用的延时函数有 sleepusleepndelayudelaymdelay等。

  1. Linux 系统编程下用到的延时函数在头文件
#include <unistd.h>

包括 sleepusleep

  1. Linux 内核中用到的延时函数在头文件
#include <linux/delay.h>

包括 ndelayudelaymdelay

2. sleep 函数简介

函数 sleep 是秒延时,函数原型如下:

unsigned int sleep(unsigned int seconds);

例如sleep(1),即延时一秒。返回无符号的整形数值,如果延时成功则返回 0,如果延时过程中被打断,则返回剩余的秒数。例如 sleep(5),返回值为 3,那么实际延时就是 5 - 3 = 2 秒。

3. usleep 函数简介

函数 usleep 是微秒延时,函数原型如下:

int usleep(useconds_t usec);

usec 需要小于 1000,000。usleep(10) 表示延时10微妙。延时成功则返回0,失败则返回 -1

4. delay 系列简介

函数 delay 是在 Linux 内核 中使用的,也是在 Linux 驱动 中会用到。

函数 mdelay 毫秒延时,原型如下:

void mdelay(unsigned long msecs);

函数 udelay 微秒延时,原型如下:

void udelay(unsigned long usecs);

函数 ndelay 纳秒延时,原型如下:

void ndelay(unsigned long nsecs);

5. sleep 和 usleep 例程

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

int main(void) {
    int i = 10;
    while(i--) {
        sleep(2);
        printf("sleep 2s!\n");
        usleep(1000000);
        printf("sleep 1000000us!\n");
    }
    return 0;
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐