alarm定时
1s内计数的值通过屏幕输出
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
int main()
{
int i;
alarm(1); //自然定时1s后进程自动退出
for(i=0;;i++)
{
printf("%d\n",i);
}
return 0;
}
setitimer函数
函数内部结构
int setitimer(int which, const struct itimerval *new_value,
struct itimerval *old_value);
struct itimerval {
struct timeval it_interval; /* Interval for periodic timer */
struct timeval it_value; /* Time until next expiration */
};
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
自己定义计时函数
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/time.h>
unsigned int my_alarm(unsigned int sec )
{
struct itimerval it,oldit;
int ret;
it.it_value.tv_sec=sec; //正常 定时
it.it_value.tv_usec=0;
it.it_interval.tv_sec=0;//间隔定时
it.it_interval.tv_usec=0;
ret=setitimer(ITIMER_REAL,&it,&oldit);
if(ret==-1)
{
perror("setitimer");
exit(1);
}
return oldit.it_value.tv_sec;
}
int main()
{
int i;
my_alarm(1);
for(i=0;;i++)
printf("%d\n",i);
return 0;
}