setitimer

张开发
2026/4/9 18:04:45 15 分钟阅读

分享文章

setitimer
1 是什么setitimer (全称是 Set Interval Timer即“设置间歇定时器”) 是 Linux/UNIX 系统中用于设置间歇定时器interval timer的系统调用。 它可以在指定的时间后触发信号 并且可以周期性地重复触发 从而实现延时或定时执行任务的功能。 简单来说调用 setitimer 后 系统会在指定时间到期时向进程发送一个信号 进程捕获该信号后执行相应的处理函数。2 函数原型与头文件#includesys/time.hintsetitimer(intwhich,conststructitimerval*new_value,structitimerval*old_value);定时器是进程级别的信号会投递到进程中任意未阻塞该信号的线程。返回值 成功返回 0失败返回 -1 并设置 errno参数 #1 int which Linux 系统为每个进程提供了三种不同的定时器通过 which 参数指定使用哪一种 ITIMER_REAL 按真实时间墙上时钟计时无论进程是否运行 触发信号 SIGALRM ITIMER_VIRTUAL 仅在进程用户态执行时计时 触发信号 SIGVTALRM ITIMER_PROF 在进程用户态和内核态执行时均计时 触发信号 SIGPROF #2 const struct itimerval *new_value 指向 struct itimerval 结构体的指针用于指定定时器的触发时间 #3 struct itimerval *old_value 用于保存调用前的旧值。若传 NULL则不保存3 struct itimervalstructitimerval{structtimevalit_interval;// 定时器周期重复间隔structtimevalit_value;// 首次触发的剩余时间};it_value 指定定时器第一次触发的时间。 当定时器倒计时到 0 时系统发送信号。 it_interval 指定之后每次重复触发的时间间隔。 如果为 0则定时器只触发一次单次定时器 如果不为 0则每次触发后自动重置为这个间隔实现周期性定时。structtimeval{time_ttv_sec;// 秒suseconds_ttv_usec;// 微秒 (0 ~ 999999)};

更多文章