你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在linux环境下创建一个内部匿名单次定时器

[复制链接]
小白云 发布时间:2024-3-4 12:01
#include <stdio.h>
#include <signal.h>
#include <time.h>
#include <unistd.h>
#include <stdlib.h>

void task(union sigval value) {
// 在这里执行您的任务
timer_t *timer = value.sival_ptr;
printf("任务正在执行...\n");

// 打印当前实际按计时器的值
time_t currTime = time(NULL);
printf("当前实际时间:%s", ctime(&currTime));

// 销毁定时器
timer_delete(*timer);
free(timer);
}

void start_timer(void handler(union sigval), int sed) {
// 创建定时器
timer_t *timer = (timer_t *) malloc(sizeof(timer_t));
struct sigevent sev;
struct itimerspec its;

// 设置定时器事件
sev.sigev_notify = SIGEV_THREAD;
sev.sigev_notify_function = task;
sev.sigev_value.sival_ptr = timer;
sev.sigev_notify_attributes = NULL;

// 创建定时器
timer_create(CLOCK_REALTIME, &sev, timer);

// 设置定时器触发时间
its.it_value.tv_sec = sed;
its.it_value.tv_nsec = 0;
its.it_interval.tv_sec = 0;
its.it_interval.tv_nsec = 0;

// 启动定时器
timer_settime(*timer, 0, &its, NULL);
}

int main() {
// 打印当前实际按计时器的值
time_t currTime = time(NULL);
printf("当前实际时间:%s", ctime(&currTime));

start_timer(task, 5);
start_timer(task, 3);
start_timer(task, 10);

// 等待定时器触发
while (1) {
sleep(1);
}

return 0;
}
收藏 评论1 发布时间:2024-3-4 12:01

举报

1个回答
背影101 回答时间:2024-3-5 10:40:24
[md]

所属标签

ST中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版