1. 延时函数简介
Linux 中常用的延时函数有 sleep,usleep,ndelay,udelay,mdelay等。
- Linux 系统编程下用到的延时函数在头文件
#include <unistd.h>
包括 sleep,usleep;
- Linux 内核中用到的延时函数在头文件
#include <linux/delay.h>
包括 ndelay,udelay,mdelay。
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;
}