溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

[Linux信號(hào)]使用setitimer函數(shù)進(jìn)行精確定時(shí)

發(fā)布時(shí)間:2020-08-04 05:39:54 來(lái)源:網(wǎng)絡(luò) 閱讀:2300 作者:銀河星君 欄目:編程語(yǔ)言
#include <signal.h>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
//這是對(duì)信號(hào)的處理函數(shù)
static void signalDeal(int signo)
{
   struct timeval tp;
   struct tm *tm;
   gettimeofday(&tp,NULL);   //獲得系統(tǒng)當(dāng)前時(shí)間(秒和微秒)
   tm=localtime(&tp.tv_sec);   //獲得當(dāng)?shù)啬壳皶r(shí)間和日期
   printf(" sec = %ld \t",tp.tv_sec);    //打印從UNIX紀(jì)元開(kāi)始到現(xiàn)在的秒數(shù)
   printf(" usec = %ld \n",tp.tv_usec);  //打印微秒 printf("%d-%d-%d%d:%d:%d\n",tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec);  /*打印當(dāng)?shù)啬壳皶r(shí)間和日期*/
}
//時(shí)間初始化函數(shù)
static void InitTime(int tv_sec,int tv_usec)
{
   struct itimerval value;        //定義時(shí)間參數(shù)結(jié)構(gòu)體value
   signal(SIGALRM, signalDeal);  //注冊(cè)信號(hào)SIGALRM 和信號(hào)處理函數(shù)
   value.it_value.tv_sec = tv_sec;   //秒
   value.it_value.tv_usec = tv_usec; //微秒
   value.it_interval.tv_sec = tv_sec;
   value.it_interval.tv_usec = tv_usec;
   setitimer(ITIMER_REAL, &value, NULL);
   //setitimer 發(fā)送信號(hào),定時(shí)類(lèi)型為ITIMER_REAL
}
//主函數(shù)
int main(int argc,char *argv[])
{
   InitTime(1,0);     //每隔1秒打印一次
   while(1)
   {
   }
   exit(0);
}


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI