当前位置: 首页 > news >正文

Linux 信号 alarm函数 setitimer函数

/*#include <unistd.h>unsigned int alarm(unsigned int seconds);功能:设置定时器。函数调用,开始倒计时,0的时候给当前的进程发送SIGALARM信号参数:倒计时的时长。。单位:秒  如果参数为0,无效返回值:倒计时剩余的时长-之前没有定时器,返回0-之前有定时器,返回之前的定时器剩余的时间SIGALARM:默认终止当前的进程,每一个进程有且仅有唯一的定时器函数不阻塞
*/
#include<stdio.h>
#include<unistd.h>
int main() {int second = alarm(5);printf("seconds = %d\n", second);sleep(2);second = alarm(2);printf("seconds = %d\n", second);while(1){}return 0;
}

后面新设的定时器会取代老的定时器

定时与进程的状态无关,无论进程是阻塞,挂起,就绪,运行定时器都是自己玩自己的

setitimer函数

/*#include <sys/time.h>int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);功能:设置定时器(闹钟)。可以替代alarm函数。精度微秒,可以实现周期性的定时。参数:-which:定时器以什么方式计时-ITIMER_REAL:真实时间,时间到达,发送SIGALRM  常用-ITIMER_VIRTUAL:用户时间,时间到达,发送SIGVTALRM-ITIMER_PROF:一该进程在用户态和内核态下所消耗的时间来计算,时间到达,发送SIGPROF信号-new_value:设置定时器的属性struct itimerval {struct timeval it_interval;   每个阶段的倒计时时长struct timeval it_value;      延迟多长时间执行定时器};struct timeval {time_t      tv_sec;        秒数suseconds_t tv_usec;       微秒};-old_value:记录上次定时的时间参数返回值:成功0  失败-1
*/
#include <sys/time.h>
#include<stdio.h>
#include<unistd.h>int main() {struct itimerval new_value;new_value.it_interval.tv_sec = 2;new_value.it_interval.tv_usec = 0;new_value.it_value.tv_sec = 3;new_value.it_value.tv_usec = 0;int ret = setitimer(ITIMER_REAL, &new_value, NULL);printf("开始\n");if(ret == -1) {perror("ret");return 0;}while(1) {printf("1\n");sleep(1);}return 0;
}

延迟三秒开始执行就会立马发送信号,然后每隔两秒发送一次

http://www.lryc.cn/news/172049.html

相关文章:

  • 自主设计,模拟实现 RabbitMQ - 实现发送方消息确认机制
  • 【数据结构】二叉树的·深度优先遍历(前中后序遍历)and·广度优先(层序遍历)
  • 优彩云采集器下载-免费优彩云采集器下载地址
  • 【Python】OJ 常用函数
  • 【Vue】上万个字把事件处理讲解的淋漓尽致
  • Remmina中VNC、SSH和RDP的区别
  • Spring Boot实现web.xml功能
  • 陆拾捌- 如何通过数据影响决策(三)
  • VMware 三种网络连接模式
  • Scikit-Learn快速生成分类数据集
  • 西门子 S7 协议解析
  • 一、python解题——求序列最长递增
  • 【Java 基础篇】Java线程:volatile关键字与原子操作详解
  • 992. K 个不同整数的子数组
  • Vue 使用vue-cli构建SPA项目(超详细)
  • SpringBoot工程模板
  • 学习SLAM:SLAM进阶(十)暴力更改ROS中的PCL库
  • js 事件流、事件冒泡、事件捕获、阻止事件的传播
  • 一家美国公司被黑,一个拉美国家政务服务瘫痪
  • c++ QT 十八位时间戳转换
  • 全国职业技能大赛云计算--高职组赛题卷④(容器云)
  • 【TCP】延时应答 与 捎带应答
  • URL与URI小结
  • QT--day5
  • 在windows和linux上玩转Tensorrt
  • 七天学会C语言-第五天(函数)
  • 340. 至多包含 K 个不同字符的最长子串
  • 【分布式计算】副本数据Replicated Data
  • erlang练习题(二)
  • CRM软件系统价格不同的原因