c語(yǔ)言定時(shí)器示例分享
在linux下開(kāi)發(fā),使用的是C語(yǔ)言。適用于需要定時(shí)的軟件開(kāi)發(fā),以系統(tǒng)真實(shí)的時(shí)間來(lái)計(jì)算,它送出SIGALRM信號(hào)。每隔一秒定時(shí)一次
c語(yǔ)言定時(shí)器
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include "pthread.h"
#include <netinet/in.h>
#include <signal.h>
#include <sys/time.h>
struct StructOfTimerStatus
{
unsigned int count; //計(jì)數(shù)值
unsigned int flag; //定時(shí)標(biāo)志
}
;
struct StructOfTimer
{
struct StructOfTimerStatus testtime; //測(cè)試定時(shí)器
}
mytime;
void SetTimer(int sec,int usec);
void SigalrmFunc(void);
//定時(shí)器函數(shù)
/*******************************************************************************
* Discription:SIGALRM 信號(hào)響應(yīng)函數(shù);用作定時(shí)器
* Input :
* Output :
*******************************************************************************/
void SigalrmFunc(void)
{
if(mytime.testtime.count++>20) //定時(shí)1秒,20*50000=1s
{
mytime.testtime.flag=1;
mytime.testtime.count=0;
}
}
void SetTimer(int sec,int usec)
{
struct itimerval value,ovalue;
signal(SIGALRM,(void *)SigalrmFunc);
value.it_value.tv_sec = sec;
value.it_value.tv_usec = usec;
value.it_interval.tv_sec = sec;
value.it_interval.tv_usec = usec;
setitimer(ITIMER_REAL,&value,&ovalue);
}
int main(int argc, char **argv)
{
SetTimer(0, 50000);
while(1)
{
if(mytime.testtime.flag == 1)
{
mytime.testtime.flag = 0;
system("clear");
printf("Timing success\n");
}
}
return 0;
}
相關(guān)文章
C++實(shí)現(xiàn)Linux下彈出U盤(pán)的方法
這篇文章主要介紹了C++實(shí)現(xiàn)Linux下彈出U盤(pán)的方法,實(shí)例分析了C++在Linux平臺(tái)上進(jìn)行IO操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07C++ std::make_unique和std::make_shared用法小結(jié)
本文主要介紹了C++ std::make_unique和std::make_shared用法,使用std::make_unique和std::make_shared能夠簡(jiǎn)化動(dòng)態(tài)分配內(nèi)存和構(gòu)造對(duì)象的過(guò)程,提高代碼的安全性和可讀性,感興趣的可以了解一下2023-11-11C語(yǔ)言實(shí)現(xiàn)自行車(chē)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)自行車(chē)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08C語(yǔ)言深入講解棧與堆和靜態(tài)存儲(chǔ)區(qū)的使用
對(duì)大多數(shù)C 語(yǔ)言初學(xué)者來(lái)說(shuō),堆棧卻是一個(gè)很模糊的概念。堆棧是一種數(shù)據(jù)結(jié)構(gòu),一個(gè)在程序運(yùn)行時(shí)用于存放的地方,相信這可能是很多初學(xué)者共同的認(rèn)識(shí),靜態(tài)存儲(chǔ)區(qū)即內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在2022-04-04C++中const、volatile、mutable使用方法小結(jié)
這篇文章主要介紹了C++中const、volatile、mutable使用方法小結(jié),需要的朋友可以參考下2020-01-01C語(yǔ)言基礎(chǔ)應(yīng)用處理學(xué)生打分?計(jì)算時(shí)間?最少硬幣問(wèn)題詳細(xì)過(guò)程
很多的問(wèn)題其實(shí)可以用編程來(lái)解決作答,本篇文章帶你用C語(yǔ)言解決最少硬幣問(wèn)題、計(jì)算已經(jīng)過(guò)去了多久、學(xué)生成績(jī)自動(dòng)打分來(lái)做基礎(chǔ)的訓(xùn)練2022-02-02