当前位置:嗨网首页>书籍在线阅读

23-练习

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

23.9 练习

23-1.  尽管Linux将alarm()实现为系统调用,但这当属蛇足。请用setitimer()实现alarm()。

23-2.  试着将程序清单23-3(t_nanosleep.c)程序置于后台运行,并设置60秒的休眠间隔,同时使用如下命令发送尽可能多的SIGINT信号给后台进程:

639.png 应该能注意到程序休眠时间要长于预期。将nanosleep()用clock_gettime()(使用CLOCK_REALTIME时钟)和设置TIMER_ABSTIME标志的clock_nanosleep()来替换。(此练习需要Linux 2.6版本。)反复测试修改后的程序,并解释新老程序间的差别。

23-3.  编写一个程序验证:如果调用timer_create()时将参数evp置为NULL,那么这就等同于将evp设为指向sigevent结构的指针,并将该结构中的sigev_notify置为SIGEV_SIGNAL,将sigev_signo置为SIGALRM,将si_value.sival_int置为定时器ID。

23-4.  修改程序清单23-5(ptmr_sigev_signal.c)中程序,并用sigwaitinfo()替换信号处理器函数。

①译者注:内核调度所为。