linux c setitimer用法說明

2021-08-01 18:05:43 字數 1588 閱讀 4694

在linux c程式設計中,setitimer是乙個比較常用的函式,可用來實現延時和定時的功能。

使用時需要引入的標頭檔案:

[cpp]view plain

copy

#include 

setitimer函式原型:

[cpp]view plain

copy

intsetitimer(

intwhich, 

const

struct

itimerval *new_value,  

struct

itimerval *old_value);  

其中which引數表示型別,可選的值有:

itimer_real:以系統真實的時間來計算,它送出sigalrm訊號。

itimer_virtual:以該程序在使用者態下花費的時間來計算,它送出sigvtalrm訊號。

itimer_prof:以該程序在使用者態下和核心態下所費的時間來計算,它送出sigprof訊號。

緊接著的new_value和old_value均為itimerval結構體,先看一下itimerval結構體定義:

[cpp]view plain

copy

struct

itimerval ;  

struct

timeval ;  

itimeval又是由兩個timeval結構體組成,timeval包含tv_sec和tv_usec兩部分,其中tv_se為秒,tv_usec為微秒(即1/1000000秒)

其中的new_value引數用來對計時器進行設定,it_interval為計時間隔,it_value為延時時長,下面例子中表示的是在setitimer方法呼叫成功後,延時1微秒便觸發一次sigalrm訊號,以後每隔200毫秒觸發一次sigalrm訊號。

settimer工作機制是,先對it_value倒計時,當it_value為零時觸發訊號,然後重置為it_interval,繼續對it_value倒計時,一直這樣迴圈下去。

基於此機制,setitimer既可以用來延時執行,也可定時執行。

假如it_value為0是不會觸發訊號的,所以要能觸發訊號,it_value得大於0;如果it_interval為零,只會延時,不會定時(也就是說只會觸發一次訊號)。

old_value引數,通常用不上,設定為null,它是用來儲存上一次setitimer呼叫時設定的new_value值。

以下是乙個簡單的使用例子:

[cpp]view plain

copy

#include 

#include 

#include 

void

signalhandler(

intsigno)  

}  intmain(

intargc, 

char

*argv)    

linux c setitimer用法說明

使用時需要引入的標頭檔案 includeint setitimer int which,const struct itimerval new value,struct itimerval old value 其中which引數表示型別,可選的值有 itimer real 以系統真實的時間來計算,它送...

boost bind function用法說明

目錄 1 標頭檔案 bind 函式 include bind.hpp function 使用標頭檔案 include 如果寫程式時出錯則在 function 及bind 前面加上限定 boost 2 功能 bind 繫結乙個函式及其引數.function 是類和模板的組合,它定義的物件可以指向乙個函...

continue break exit用法說明

1,continue用法 2,break用法 3,sys.exit用法 1,continue用法 跳出本次迴圈,繼續下次迴圈 for i in xrange 10 if i 8 continue print i 當程式執行到i 8的時候,發現i此時等於這個時候,在執行continue後,就返回到fo...