linux下函式setitimer精講

2021-09-29 23:23:04 字數 2366 閱讀 4511

參考資料 linux函式setitimer 傳送門

(北京郵電大學電腦科學與技術系作業系統實驗——2.2核心定時器)

linux作業系統下

記錄乙個程序執行時所占用的real time, cpu time,user time ,kernel time

參考**及其精講

#include

#include

#include

static

void

sighandle

(int);

//自定義訊號處理函式

static

long realsecond =0;

static

long vtsecond =0;

static

long profsecond =0;

static

struct itimerval realt,virtt,proft;

intmain()

}//用計時器的當前值寫value指向的結構體

getitimer

(itimer_prof,

&proft)

;getitimer

(itimer_real,

&realt)

;getitimer

(itimer_virtual,

&virtt)

;printf

("\n");

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

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

*//*這裡realt.it_value_tv_sec的值為0-10,並且迴圈執行,從10開始,每秒遞減,當為0的時候觸發sighandle()事件,同時初始化為10。*/

moresec =

10- realt.it_value.tv_sec;

值逐漸遞減,由10s開始遞減

moremsec =

(1000000

- realt.it_value.tv_usec)

/1000

;// 轉換成ms

printf

("realtime = %ld sec, %ld msec\n"

,realsecond+moresec,moremsec);

moresec =

10- proft.it_value.tv_sec;

moremsec =

(1000000

- proft.it_value.tv_usec)

/1000

;printf

("cputime = %ld sec, %ld msec\n"

,profsecond+moresec,moremsec);

moresec =

10- virtt.it_value.tv_sec;

moremsec =

(1000000

- virtt.it_value.tv_usec)

/1000

;printf

("usertime = %ld sec, %ld msec\n"

,vtsecond+moresec,moremsec);/*

t1=使用者態執行時間

t2=使用者態+核心執行時間

t2-t1 = 核心執行時間 kernel time

*/

t1 =(10

- proft.it_value.tv_sec)

*1000+(

1000000

- proft.it_value.tv_usec)

/1000

+ profsecond*

10000

; t2 =(10

- virtt.it_value.tv_sec)

*1000+(

1000000

- virtt.it_value.tv_usec)

/1000

+ vtsecond*

10000

; moresec =

(t1 - t2)

/1000

; moremsec =

(t1 - t2)

%1000

;printf

("kerneltime = %ld sec, %ld msec\n"

,moresec,moremsec)

;fflush

(stdout);

}static

void

sighandle

(int s)

}

linux下轉碼函式

linux沒有widechartomultibyte,multibytetowidechar,我們通常.linux下面的沒有命名為 widechartomultibyte 和 multibytetowidechar 函式,widechartomultibyte,multibytetowidechar...

linux下的Select函式

part1 fd set errorfds同上面兩個引數的意圖,用來監視檔案錯誤異常。struct timeval timeout是select的超時時間,這個引數至關重要,它可以使select處於三種狀態,第一,若將null以形參傳入,即不傳入時間結構,就是將select置於阻塞狀態,一定等到監視...

LINUX下OPEN函式簡介

open 函式用於開啟和建立檔案。以下是 open 函式的簡單描述 fcntl.h int open const char pathname,int oflag,mode t mode 返回值 成功則返回檔案描述符,否則返回 1 對於 open 函式來說,第三個引數 僅當建立新檔案時才使用,用於指定...