Linux定时器实验
Linux第六次实验及分析报告
实验要求:
1)在用户态编写一个程序,该程序设定一个定时器,在时间到期的时候做出某种可观察的响应(方法不限)
2)分析你的程序的实际执行借助了内核的哪些机制
3)提交实验与分析报告
一:在用户态编写一个程序,该程序设定一个定时器,在时间到期的时候做出某种可观察的响应(方法不限)
G++进行编译
运行结果如下:
可见调用间隔定时器定时10秒成功!
二:分析你的程序的实际执行借助了内核的哪些机制which:间歇计时器类型,有三种选择
ITIMER_REAL //数值为0,计时器的值实时递减,发送的信号是SIGALRM。ITIMER_VIRTUAL //数值为1,进程执行时递减计时器的值,发送的信号是SIGVTALRM。ITIMER_PROF //数值为2,进程和系统执行时都递减计时器的值,发送的信号是SIGPROF。
void (*signal(int signum, void (*handler)(int)))(int);在使用该调用的进程中加入以下头文件: #include 上述声明格式比较复杂,如果不清楚如何使用,也可以通过下面这种类型定义的格式来使用(POSIX的定义): typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler) 在调用中,参数signum指出要设置处理方法的信号。第二个参数handler是一个处理函数,或者是 SIG_IGN:忽略参数signum所指的信号。 SIG_DFL:恢复参数signum所指信号的处理方法为默认值。 传递给信号处理例程的整数参数是信号值,这样可以使得一个信号处理例程处理多个信号。系统调用signal返回值是指定信号signum前一次的处理例程或者错误时返回错误代码SIG_ERR。