在编写应用层程序时,有时需要延时一下,这个时候该怎么办呢?
在内核代码中,我们经常会看到这样的头文件使用#include <linux/delay.h>,心想着直接调用这个就可以了吧!可是在编译时发现,压根通不过,
提示错误如下:
error: No such file or directory.
是不是觉得很奇怪,明明文件是存在的,怎么就不能调用了,而且内核很多文件调用得很欢。这是为什么呢?
因为内核程序跟应用程序是有区别的,有些特殊的内核头文件编译器不允许被应用程序调用。故编译应用程序使用内核的头文件,报错是难免的
但是,这个时候该怎么呢?
哈哈!#include <unistd.h>头文件出现了!功能与#include <linux/delay.h>一致,但是可以在应用层随便调用。不错的东西吧!以下是其详细介绍:
应用层:
#include <unistd.h>
1、unsigned int sleep(unsigned int seconds); 秒级
2、int usleep(useconds_t usec); 微秒级:1/10^-6
#define _POSIX_C_SOURCE 199309
#include <time.h>
3、int nanosleep(const struct timespec *req, struct timespec *rem);
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
// The value of the nanoseconds field must be in the range 0 to 999999999.
内核层:
include <linux/delay.h>
1、void ndelay(unsigned long nsecs); 纳秒级:1/10^-10
2、void udelay(unsigned long usecs); 微秒级: 1/10^-6