應用層定時器 timerfd

2021-09-25 05:53:34 字數 1079 閱讀 7986

sys/timerfd.h
int timerfd_create(int clockid, int flags);
clock_realtime :systemwide realtime clock. 實時時鐘,真實的時間

clock_monotonic:系統啟動後開始計時,從不進行調整和復位,不受系統時鐘修改的影響

struct timespec ;

struct itimerspec ;

int timerfd_settime(int fd, int flags, const struct itimerspec *new_value, struct itimerspec *old_value);

tfd_timer_abstime 表示絕對時間,例如:若clockid填的是clock_monotonic,tfd_timer_abstime表示啟動後 it_value 時間,

0 表示相對時間, 例如:若clockid填的是clock_monotonic,flags為0 表示當前時間後it_value時間,

int timerfd_gettime(int fd, struct itimerspec *curr_value);
uint64_t exp = 0;

read(fd, &exp, sizeof(uint64_t));

close(fd);
如果timerfd_settime設定為tfd_timer_abstime(絕對時間),則設定的時間是具體的某個時間點, clock_gettime獲取當前時間加上時間差,獲取時設定clock_realtime還是clock_monotonic取決於timerfd_create設定的值。

如果timerfd_settime設定為0(相對時間),則設定的時間是相對與當前的時間,例如:

new_value.it_value.tv_sec = 3;

new_value.it_value.tv_nsec = 0;

Linux應用層定時器

alarm會設定乙個定時器,當時間到期後會觸發sigalrm訊號,該訊號可能會打斷系統呼叫的執行,它使用的定時器和setitimer對應的itimer real是同乙個。include include include include include include include include i...

linux應用層定時器與休眠

1 alarm 如果不要求很精確的話,用alarm 和signal 就夠了 unsigned int alarm unsigned int seconds 函式說明 alarm 用來設定訊號sigalrm在經過引數seconds指定的秒數後傳送給目前的程序。如果引數seconds為0,則之前設定的鬧...

Linux應用層下定時器函式setitimer

1.介紹 在linux下如果定時如果要求不太精確的話,使用alarm 和signal 就行了 精確到秒 但是如果想要實現精度較高的定時功能的話,就要使用setitimer函式。setitimer 為linux的api,並非c語言的standard library,setitimer 有兩個功能,一是...