在Unix中,nanosleep()函數用于將進程休眠指定的時間量。其原型如下:
#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);
nanosleep()函數接受兩個參數:
nanosleep()函數會使進程休眠指定的時間,單位為納秒。它會阻塞進程,直到休眠時間結束或者被信號中斷。如果休眠時間超過1秒,那么可以使用sleep()函數。
nanosleep()函數的返回值為0表示休眠時間結束,如果返回-1,表示出現了錯誤,且錯誤代碼保存在errno中。
示例用法:
#include <stdio.h>
#include <unistd.h>
#include <time.h>
int main() {
struct timespec req, rem;
req.tv_sec = 1; // 休眠1秒
req.tv_nsec = 0; // 休眠的納秒數
if(nanosleep(&req, &rem) == -1) {
printf("nanosleep error\n");
return 1;
}
printf("Sleep complete\n");
return 0;
}
在上面的示例中,進程會休眠1秒。如果休眠被信號中斷,剩余休眠時間將被保存在rem中。