Linux struct itimerval用法
先看一段程式碼
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <stdlib.h>
#include <signal.h>
static int count = 0;
void set_timer()
{
struct itimerval itv;
itv.it_value.tv_sec = 3; //timer start after 3 seconds later
itv.it_value.tv_usec = 0;
itv.it_interval.tv_sec = 1;
itv.it_interval.tv_usec = 0;
setitimer(ITIMER_REAL,&itv,NULL);
}
void signal_handler(int m)
{
count ++;
printf("%d\n",count);
}
int main()
{
signal(SIGALRM,signal_handler);
set_timer();
while(count < 10);
exit(0);
return 0;
}
這段程式碼實現的功能:3秒鐘後啟動定時器,然後每隔1秒鐘向終端列印count的遞增值,當count到10時程式退出。
結構體原型:
struct itimerval {
struct timeval it_interval; /* next value */
struct timeval it_value; /* current value */
};
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
即:
struct itimerval {
struct timeval it_interval; /* 計時器重啟動的間歇值 */
struct timeval it_value; /* 計時器安裝後首先啟動的初始值 */
};
struct timeval {
long tv_sec; /* 秒 */
long tv_usec; /* 微妙(1/1000000) */
};
再來看這個函式:
int setitimer(int which, const struct itimerval *value,struct itimerval *ovalue);
setitimer()將value指向的結構體設為計時器的當前值,如果ovalue不是NULL,將返回計時器原有值。
which:間歇計時器型別,有三種選擇
ITIMER_REAL //數值為0,計時器的值實時遞減,傳送的訊號是SIGALRM。
ITIMER_VIRTUAL //數值為1,程式執行時遞減計時器的值,傳送的訊號是SIGVTALRM。
ITIMER_PROF //數值為2,程式和系統執行時都遞減計時器的值,傳送的訊號是SIGPROF。
返回說明:
成功執行時,返回0。失敗返回-1,errno被設為以下的某個值
EFAULT:value或ovalue是不有效的指標
EINVAL:其值不是ITIMER_REAL,ITIMER_VIRTUAL 或 ITIMER_PROF之一
相關文章
- struct的一種用法Struct
- 結構體定義:struct與typedef struct 用法詳解和用法小結結構體Struct
- struct的匿名用法詳解Struct
- Python中struct.pack()和struct.unpack()用法詳解PythonStruct
- Python中struct.pack()和struct.unpack()用法詳細說明PythonStruct
- GO 同 (異) 包呼叫以及 struct 的用法GoStruct
- 關於Golang struct{}{}用法和注意事項GolangStruct
- 結構體定義 typedef struct 用法詳解和用法小結結構體Struct
- linux redefinition of 'struct timspec'解決LinuxStruct
- Orale的struct,array,cursor,stored procedure,function,package的用法例子StructFunctionPackage
- Python使用struct處理二進位制(pack和unpack用法)PythonStruct
- linux記憶體管理(六)- 核心新struct - folioLinux記憶體Struct
- struct和typedef struct 有什麼不同呢?Struct
- Ruby Struct EqualStruct
- 結構 STRUCTStruct
- Linux sed命令用法Linux
- linux中sed用法Linux
- linux之cut用法Linux
- linux du命令用法Linux
- linux之sed用法Linux
- linux中#和## 用法Linux
- Linux 命令 indent 用法Linux
- linux之awk用法Linux
- Linux命令-Sed用法教程Linux
- linux中grep基本用法Linux
- Linux fork程式的用法Linux
- 【Linux之truncate 命令用法】Linux
- 【Linux篇】--sed的用法Linux
- Linux中wget用法Linuxwget
- Linux shell 用法和技巧Linux
- Linux shell用法和技巧Linux
- Linux下history命令用法Linux
- linux 的xargs命令用法Linux
- linux下 date的用法Linux
- Linux 下的 vi 用法Linux
- Linux下scp的用法Linux
- linux 下 free的用法Linux
- Linux 命令“ls ” 的用法Linux