代码拉取完成,页面将自动刷新
#include<iostream>
#include<sys/timerfd.h>
#include<cassert>
#include<unistd.h>
#include<fcntl.h>
int main()
{
int timerfd = timerfd_create(CLOCK_MONOTONIC,TFD_CLOEXEC|TFD_NONBLOCK);
assert(timerfd!=-1);
struct itimerspec timeout;
//第一次超时时间间隔
timeout.it_value.tv_sec = 2; // 第一次超时为 3 s
timeout.it_value.tv_nsec = 0;
//第二次以及之后的超时时间间隔
timeout.it_interval.tv_sec = 1; // 往后每隔 1s 超时一次
timeout.it_interval.tv_nsec = 0;
int ret = timerfd_settime(timerfd,0,&timeout,NULL); //设置定时通知
assert(ret!=-1); //返回值为-1表示设置失败,但是一般是不会失败的,可以不用关心
int sec =0;
uint64_t times = 0;
while(1)
{
sleep(1);
sec++;
ret = read(timerfd,×,sizeof times);
if(ret>=0)
{
std::cout<<"第"<<sec<<"秒触发了一次超时"<<std::endl;
}
}
// sleep(10);
// uint64_t times = 0;
// //十秒之后读取下超时的次数
// ret = read(timerfd,×,sizeof times);
// assert(read>=0);
// std::cout<<"times:"<<times<<std::endl;
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。