就是要努力呀 发表于 2020-3-10 18:48:19

signal函数和setitimerval函数

本帖最后由 就是要努力呀 于 2020-3-10 18:52 编辑

signal(int__sig, __sighandler_t__handler)
在头文件<signal.h>中

sig参数 设置要接受的信号类型
https://blog.csdn.net/weibo1230123/article/details/81505152

handler参数 接受到信号执行的动作
三个可选项:
1.SIG_DFL 默认处理
2.SIG_IGN 忽略信号
3.定义一个特殊函数来处理信号

setitimerval(int which, const struct itimerval *new_value, const struct itimerval *old_value)
在头文件<sys/time.h>中

which表示类型
三个可选项:
1.ITIMER_REAL 以系统真是时间来计算,它送出SIGALRM信号

2.ITIMER_VIRTUAL 以该进程在用户态下话费的时间来计算,它送出SIGVTALRM信号

3.ITIMER_PROF 以该进程在用户态和内核态下所费时间来计算,它送出SIGPROF信号

第二个参数是一个itimerval类型的指针 用来定时

第三个参数同样是一个itimerval类型的指针 一般设置为NULL


itimerval 结构体


struct itimerval
{
struct timerval it_interval; //计时器间隔多长时间发送信号
struct timeval it_value; //计时器第一次发送信号的时间间隔
}

struct timerval
{
tv_sec; //秒
tv_usec; //微秒
}

setitimerval工作原理对it_value进行倒计时,当it_value为0时送出which指定的信号,在将it_value重置为it_interval,重复进行

人造人 发表于 2020-3-10 18:51:58

struct timerval
{
tv_sec; //秒
tv_usec; //毫秒
}

这个不是毫秒,是微秒

就是要努力呀 发表于 2020-3-10 18:52:40

人造人 发表于 2020-3-10 18:51
这个不是毫秒,是微秒

哦哦谢谢
页: [1]
查看完整版本: signal函数和setitimerval函数