青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

Linux下的定時器:alarm()與setitimer()

Posted on 2008-08-27 09:12 Prayer 閱讀(398) 評論(0)  編輯 收藏 引用 所屬分類: LINUX/UNIX/AIX

 Linux下的定時器有兩種,以下分別介紹:
 
  1、alarm
 
  如果不要求很精確的話,用alarm()和signal()就夠了
 
  unsigned int alarm(unsigned int seconds)
 
  函數說明: alarm()用來設置信號SIGALRM在經過參數seconds指定的秒數后傳送給目前的進程。如果參數seconds為0,則之前設置的鬧鐘會被取消,并將剩下的時間返回。
 
  返回值: 返回之前鬧鐘的剩余秒數,如果之前未設鬧鐘則返回0.
 
  alarm()執行后,進程將繼續執行,在后期(alarm以后)的執行過程中將會在seconds秒后收到信號SIGALRM并執行其處理函數。
 
  
#include
#include
#include
void sigalrm_fn(int sig)
{
printf("alarm!\n");
alarm(2);
return;
}
int main(void)
{
signal(SIGALRM, sigalrm_fn);
alarm(1);
while(1) pause();
}

 

 
  2、setitimer()
 
  int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue));
 
  setitimer()比alarm功能強大,支持3種類型的定時器:
 
  ITIMER_REAL : 以系統真實的時間來計算,它送出SIGALRM信號。
 
  ITIMER_VIRTUAL : -以該進程在用戶態下花費的時間來計算,它送出SIGVTALRM信號。
 
  ITIMER_PROF : 以該進程在用戶態下和內核態下所費的時間來計算,它送出SIGPROF信號。
 
  setitimer()第一個參數which指定定時器類型(上面三種之一);第二個參數是結構itimerval的一個實例;第三個參數可不做處理。
 
  setitimer()調用成功返回0,否則返回-1.
 
  下面是關于setitimer調用的一個簡單示范,在該例子中,每隔一秒發出一個SIGALRM,每隔0.5秒發出一個SIGVTALRM信號:
 
  
#include
#include
#include
#include
#include
#include
int sec;
void sigroutine(int signo){
switch (signo){
case SIGALRM:
printf("Catch a signal -- SIGALRM \n");
signal(SIGALRM, sigroutine);
break;
case SIGVTALRM:
printf("Catch a signal -- SIGVTALRM \n");
signal(SIGVTALRM, sigroutine);
break;
}
return;
}
int main()
{
struct itimerval value, ovalue, value2; //(1)
sec = 5;
printf("process id is %d\n", getpid());
signal(SIGALRM, sigroutine);
signal(SIGVTALRM, sigroutine);
value.it_value.tv_sec = 1;
value.it_value.tv_usec = 0;
value.it_interval.tv_sec = 1;
value.it_interval.tv_usec = 0;
setitimer(ITIMER_REAL, &value, &ovalue); //(2)
value2.it_value.tv_sec = 0;
value2.it_value.tv_usec = 500000;
value2.it_interval.tv_sec = 0;
value2.it_interval.tv_usec = 500000;
setitimer(ITIMER_VIRTUAL, &value2, &ovalue);
for(;;)
;
}

 

 
  (1) struct itimerval
 
  
struct itimerval {
struct timeval it_interval; /* timer interval */
struct timeval it_value; /* current value */
};
itimerval: i --> interval
val --> value

 

 
  itimerval結構中的it_value是減少的時間,當這個值為0的時候就發出相應的信號了。 然后再將it_value設置為it_interval值。
 
  (2) setitimer()
 
  setitimer()為其所在進程設置一個定時器,如果itimerval.it_interval不為0(it_interval的兩個域都不為0),則該定時器將持續有效(每隔一段時間就會發送一個信號)
 
  注意:Linux信號機制基本上是從Unix系統中繼承過來的。早期Unix系統中的信號機制比較簡單和原始,后來在實踐中暴露出一些問題,因此,把那些建立在早期機制上的信號叫做"不可靠信號",信號值小于SIGRTMIN(SIGRTMIN=32,SIGRTMAX=63)的信號都是不可靠信號。這就是"不可靠信號"的來源。它的主要問題是:進程每次處理信號后,就將對信號的響應設置為默認動作。在某些情況下,將導致對信號的錯誤處理;因此,用戶如果不希望這樣的操作,那么就要在信號處理函數結尾再一次調用signal(),重新安裝該信號

 

 

 

 

 

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜亚洲视频| 国产欧美精品一区| 亚洲私人影院| 一本大道久久a久久综合婷婷 | 亚洲精品四区| 亚洲精品韩国| 欧美激情91| 亚洲欧洲一区二区天堂久久| 亚洲乱码精品一二三四区日韩在线| 亚洲精品国久久99热| 亚洲图片自拍偷拍| 午夜一区在线| 裸体素人女欧美日韩| 欧美大片一区二区| 欧美午夜激情在线| 好看不卡的中文字幕| 亚洲高清视频一区二区| 宅男噜噜噜66国产日韩在线观看| 香蕉久久国产| 欧美成人精品在线观看| 欧美精品日日鲁夜夜添| 亚洲激情成人在线| 亚洲免费成人av| 亚洲午夜在线| 猛男gaygay欧美视频| 欧美视频一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲精品资源| 久久久久国产精品一区三寸| 亚洲国产精品女人久久久| 亚洲一区二区在线播放| 欧美/亚洲一区| 国产欧美丝祙| 一区二区三区日韩在线观看 | 日韩视频一区二区在线观看 | 国产午夜精品理论片a级大结局 | 一区二区激情小说| 久久久精品国产免大香伊| 亚洲欧洲日本在线| 久久久免费观看视频| 国产精品草草| 亚洲美女av网站| 久久综合狠狠综合久久综青草| 亚洲精品看片| 免费观看成人www动漫视频| 国产亚洲网站| 欧美一区二区三区日韩| 亚洲精品视频免费观看| 欧美成年人网| 亚洲日本免费电影| 欧美aaa级| 久久久久久久久久久成人| 国产一二三精品| 久久久精品久久久久| 亚洲欧美另类中文字幕| 国产精品高清一区二区三区| 欧美午夜欧美| 亚洲精品一区二区三区四区高清| 美国成人毛片| 久久精品女人的天堂av| 激情综合自拍| 你懂的一区二区| 久久精品国语| 怡红院av一区二区三区| 免费在线亚洲欧美| 欧美 日韩 国产一区二区在线视频| 一区二区三区在线观看国产| 乱人伦精品视频在线观看| 久久久久国产精品一区二区| 伊人久久婷婷色综合98网| 久久人人爽国产| 久久av二区| 一区二区三区自拍| 亚洲第一在线视频| 欧美日韩亚洲视频一区| 性久久久久久久| 久久国产精品一区二区三区| 又紧又大又爽精品一区二区| 母乳一区在线观看| 欧美精品一区二区蜜臀亚洲| 一个色综合导航| 亚洲一区二区三区色| 国产一区二区三区在线观看精品 | 久久精品久久99精品久久| 久久国产精品黑丝| 亚洲国产成人av在线| 亚洲国产成人av在线| 午夜日韩视频| 欧美成人69| 亚洲一区二区三区视频播放| 亚洲综合第一页| 亚洲高清久久网| 亚洲一区二区三区视频播放| 欧美一区二区三区精品| 亚洲高清不卡av| 亚洲免费大片| 国产午夜久久久久| 亚洲精品乱码久久久久| 国产一区二区三区在线观看网站| 亚洲国产精品视频一区| 欧美视频一区二区| 欧美成人午夜| 国产伦精品一区二区三区视频黑人| 久久久精品欧美丰满| 国产精品久久久久久久电影| 久久久亚洲高清| 欧美日韩一区二区在线观看| 久久最新视频| 国产精品一区久久| 亚洲精品国产精品久久清纯直播 | 亚洲欧美日韩国产综合| 久久久999成人| 亚洲免费综合| 欧美成人69| 久久免费偷拍视频| 欧美视频免费| 欧美激情亚洲激情| 国产一区二区三区在线观看免费| 99re8这里有精品热视频免费| 黄色小说综合网站| 欧美一级黄色录像| 欧美亚洲自偷自偷| 欧美午夜片在线免费观看| 欧美高清一区二区| 一区二区三区在线看| 久久精品人人做人人综合| 欧美在线视频在线播放完整版免费观看| 欧美国产三级| 亚洲国产日韩一区| 亚洲人成免费| 免费成人黄色片| 免费人成精品欧美精品| 韩国一区二区三区在线观看| 亚洲欧美中文另类| 亚洲欧美日韩国产精品| 国产精品av一区二区| 亚洲美女毛片| 一本久久综合亚洲鲁鲁| 欧美另类在线观看| 亚洲激情一区| 一区二区三区久久网| 欧美日韩高清在线一区| 亚洲人成免费| 亚洲影院色无极综合| 欧美性感一类影片在线播放| 在线亚洲欧美| 欧美亚洲综合另类| 国产一区二区三区直播精品电影 | 一区二区三区精品国产| 欧美日韩一二三区| 日韩一二三区视频| 亚洲男女毛片无遮挡| 国产一级揄自揄精品视频| 久久婷婷蜜乳一本欲蜜臀| 欧美高清在线视频| 亚洲新中文字幕| 国产在线视频欧美一区二区三区| 久久久久九九视频| 亚洲精品综合精品自拍| 香蕉乱码成人久久天堂爱免费 | 国产九九精品| 久久久久9999亚洲精品| 欧美成人一品| 一区二区三区久久精品| 国产亚洲一区二区三区在线播放 | 亚洲欧美激情四射在线日| 久久视频在线看| 亚洲美女精品久久| 国产精品亚洲精品| 欧美+亚洲+精品+三区| 一本到高清视频免费精品| 久久久久一区二区三区| 日韩亚洲国产精品| 国产一区二区精品久久99| 免费欧美网站| 亚洲欧美日韩国产一区| 欧美jizzhd精品欧美巨大免费| 一区二区三区欧美在线观看| 极品裸体白嫩激情啪啪国产精品 | 亚洲国产高清一区二区三区| 欧美日一区二区三区在线观看国产免 | 午夜伦欧美伦电影理论片| 欧美国产成人精品| 欧美一区二区成人6969| 日韩一级二级三级| 国产一区二区三区久久 | 新67194成人永久网站| 亚洲精品影视| 狠狠综合久久av一区二区小说| 欧美日韩国产小视频| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲一区二区3| 亚洲人妖在线| 欧美成ee人免费视频| 久久不射中文字幕| 亚洲在线播放| 99热精品在线| 亚洲娇小video精品| 国产一本一道久久香蕉| 国产欧美在线播放|