1.alarm()執行後,程序將繼續執行。在後期(alarm以後)的執行過程中將會在seconds秒後收到訊號sigalrm並執行其處理函式。
#include #include #include void sigalrm_fn(int sig)int main(void)
2.alarm定時器,可是僅僅能精確到秒,然而我們假設須要用到更精準的定時器能夠用setitimer
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue));
setitimer()比alarm功能強大,支援3種型別的定時器:
itimer_real : 以系統真實的時間來計算。它送出sigalrm訊號。
itimer_virtual : -以該程序在使用者態下花費的時間來計算。它送出si**talrm訊號。
itimer_prof : 以該程序在使用者態下和核心態下所費的時間來計算。它送出sigprof訊號。
setitimer()第乙個引數which指定定時器型別(上面三種之中的乙個)。第二個引數是結構itimerval的乙個例項;第三個引數可不做處理。
setitimer()呼叫成功返回0。否則返回-1。
以下是關於setitimer呼叫的乙個簡單示範,在該樣例中,每隔一秒發出乙個sigalrm。每隔0.5秒發出乙個si**talrm訊號:[code=c/c++]
#include #include #include #include #include #include int sec;setitimer不會引起執行緒的堵塞、也不會引起執行緒的切換動作,就是簡單的啟動乙個定時器,開始定時。並且這樣的定時應該是基於核心的。(windwos的settimer是基於一種訊息的模型)。setitimer儘管有三種型別itimer_real,itimer_virtual itimer_prof,可是在同一時間同一程序。一種型別的僅僅能有1個setitimer。void sigroutine(int signo)
return;
}int main()
Linux下的定時器
linux下的定時器有兩種,以下分別介紹 1 alarm 如果不要求很精確的話,用 alarm 和 signal 就夠了 unsigned int alarm unsigned int seconds 專門為sigalrm訊號而設,在指定的時間seconds秒後,將向程序本身傳送sigalrm訊號,...
linux下的「定時器」 crontab
crontab是用來設定在固定時間點或時間間隔執行某條指令,類似於時程表。使用 u user是指定user使用者的時程表。e username 調出編輯器,編輯定時任務,開啟後裡邊有多重文字編輯器,可更具自己偏好選擇,若未指定username,則是當前shell下的使用者 r username 刪除...
linux下的定時器的使用
ifdef linux evn socket include include include include include include include include include include endif 傳送back硬按鍵定時器的標誌位 static int flag back tim...