setitimer

2024-03-11 02:38
文章标签 setitimer

本文主要是介绍setitimer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

setitimer周期性发送信号
int setitimer(int which,const struct itimerval *new_value,struct itimerval *old_value);
which
ITIMER_REAL 自然定时发SIGALRM
ITIMER_VIRTUAL 计算进程执行时间 SIGVTALRM
ITIMER_PROF 进程执行时间+调度时间 ITIMER_VIRTUAL
new_value 要设置的闹钟时间
old_value 原闹钟时间
struct itimerval{
struct timeval it_interval; //周期性的时间设置
struct timeval it_value; //下次的闹钟时间
};
struct timeval{
time_t tv_sec; //秒
suseconds_t tv_usec; //微秒
}

setitimer1.c

#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>int main(int argc,char * argv[])
{struct itimerval myit={{0,0},{3,0}}; //定义3s后发送SIGNAL信号setitimer(ITIMER_REAL,&myit,NULL);while(1){printf("xxx\n");sleep(1);}return 0;
}

setitimer2.c

#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <signal.h>void catch_sig(int num)
{printf("cat %d sig\n",num);
}int main(int argc,char * argv[])
{signal(SIGALRM,catch_sig);struct itimerval myit={{3,0},{5,0}}; //第一次等待5s,之后每隔3ssetitimer(ITIMER_REAL,&myit,NULL);while(1){printf("xxx\n");sleep(1);}return 0;
}

myalarm.c

#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>unsigned int myalarm(unsigned int seconds)
{struct itimerval oldit,myit={{0,0},{0,0}}; myit.it_value.tv_sec=seconds;setitimer(ITIMER_REAL,&myit,&oldit); //seconds之后发送alarm信号printf("tv_sec%d,tv_mirsec=%d\n",oldit.it_value.tv_sec,oldit.it_value.tv_usec);return oldit.it_value.tv_sec;
}int main()
{int ret=0;ret=myalarm(5);printf("ret=%d\n",ret);sleep(3);ret=myalarm(3);printf("ret=%d\n",ret);while(1){printf("xxx\n");sleep(1);}return 0;
}

这篇关于setitimer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/796341

相关文章

【LinuxC语言】setitimer与getitimer函数

文章目录 前言一、setitimer() 函数二、getitimer() 函数三、示例代码总结 前言 在Linux系统下,编写程序时经常需要使用定时器来实现一些定时任务、超时处理等功能。setitimer() 和 getitimer() 函数是两个用于操作定时器的重要函数。它们可以帮助我们设置定时器的值、获取定时器的当前值等操作,为编写高效的定时器相关功能提供了强大的支持。

【Orangepi Zero2 全志H616】驱动舵机控制 、Linux定时器(signal、setitimer)

一、SG90舵机开发 舵机基本介绍 二、Linux定时器 signal 函数setitimer 函数原型signal、setitimer函数API调用 三、舵机 软件PWM实现 一、SG90舵机开发 舵机基本介绍 如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制用处: 垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等 常见的有0-90°、0-180

【Orangepi Zero2 全志H616】驱动舵机控制 / Linux定时器(signal、setitimer)

一、SG90舵机开发 舵机基本介绍 二、Linux定时器 signal 函数setitimer 函数原型signal、setitimer函数API调用 三、舵机 软件PWM实现 一、SG90舵机开发 舵机基本介绍 如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制用处: 垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等 常见的有0-90°、0-180