linux下定時器實現

2022-02-20 12:51:44 字數 1672 閱讀 4210

linux定時器:是指在每隔一段時間後就會進行一次相關操作,具有計時性的。

核心操作是如下方法

int setitimer(int which, const

struct itimerval *restrict value,

struct itimerval *restrict ovalue);

函式返回的是value指向的值,如果ovalue不為空時剛返回上一次的結果。

下面是例子乙個。定義操作相關的標頭檔案。

//

//ally

////

created by li yajie on 12/4/11.

////

#ifndef ally_mtimer_h

#define ally_mtimer_h /*

* * 定義乙個訊息處函式定義,由呼叫者去實現

* for example

* switch (signo)

* return; */

typedef

void (*msg_routine) (int

signo) ; /*

* * 產生乙個定時器

* param curtimesec 程式執行多久秒後執行

* param curtimeusec 程式執行多久毫秒後執行

* param loopsec 相隔多久秒後再次執行

* param loopusec 相隔多久毫秒後再次執行 */

void mtimer(unsigned int curtimesec,unsigned int curtimeusec,unsigned int loopsec,unsigned int

loopusec);

#endif

下面是實現部分:

//

//ally

////

created by li yajie on 12/4/11.

////

#include

#include

#include

#include

#include

#include

"exception.h

"#include

"mtimer.h"//

#include "types.h"/**

* 時間結構體 */

struct

itimerval tval; /*

* * 產生乙個定時器

* param curtimesec 程式執行多久秒後開始執行

* param curtimeusec 程式執行多久毫秒後執行

* param loopsec 相隔多久秒後再次執行

* param loopusec 相隔多久毫秒後再次執行 */

void mtimer(unsigned int curtimesec,unsigned int curtimeusec,unsigned int loopsec,unsigned int

loopusec)

}

但上面還有個問題,由於 setitimer() 不支援在同一程序中同時使用多次以支援多個定時器,因此,如果需要同時支援多個定時例項的話,需要由實現者來管理所有的例項。

linux 下定時器 crontab

1.直接用crontab命令編輯 cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些引數與說明 crontab u 設定某個使用者的cron服務,一般root使用者在執行這個命令的時候需要此引數 crontab l 列出某個使用者cron服務的詳細內容 crontab r ...

linux下定時器的使用

linux下定時器的使用主要用到兩個函式 setitimer 和getitimer linux系統給每個程序提供了3個定時器,每個定時器在各自不同的域裡面計數,當任何乙個timer計數結束了,系統就發乙個訊號 signal 給該程序,同時計數器重置。以下是支援的三種計數器形式 1 itimer re...

Linux下定時器的使用

2019獨角獸企業重金招聘python工程師標準 linux下應用層定時器本來有好幾種,大夥可以去搜尋其他帖子部落格,這裡我主要描述我在使用setitimer時候遇到的問題,話不多說,直接上 吧 lock timmer test.cpp include include include include...