Understanding Unix/Linux Programming 笔记:chapter 7:事件驱动编程:编写一个视频游戏
2013-10-30 22:27
991 查看
Key-word: setitimer,getitimer, signal, sigaction, 计时器,信号处理
先用curses库编写“hello,world”,然后用sleep()实现动画效果。
Sleep() make the calling thread sleep until secondshave elapsed or a signal arrived that is not ignored.
1、计时器
用alarm 和 pause 函数实现sleep()功能。Pause()挂起进程知道一个信号到达。Alarm设置本进程的计时器到达seconds秒后激发SIGALRM信号。
间隔计时器(interval timer)。与alarm相比,更复杂的计时功能,用getitimer, setitimer配置。Interval timer可以以更高的精度控制计时器不间断的发送SIGALRM信号。
计时器总是用来定时发送SIGALRM。
2、信号处理
Chapter 6介绍了用signal()处理信号,本章介绍了更复杂的signacton()处理信号。Signaction不仅可以指定信号处理函数,还可以指定是否阻塞某个信号的处理等。
后面的游戏代码中只用到了signal。
3、阻塞信号
专门的配置进程是否阻塞某信号的函数:sigprocmask。阻塞信号通常是为了防止数据损毁。
配置进程的阻塞信号属性可以使用signaction和sigprocmask。
Sigprocmask在后面的游戏代码中也没有用到。
4、弹球游戏
用interval timer不间断差生SIGALRM信号,用signal处理信号,触发信号处理接口,控制弹球的位置和实现动画效果。
用while(1)循环和getchar实现对键盘输入的监控,控制弹球的速度和方向。
5、异步输入
无需用while(1)和getchar阻塞的监听键盘,而是键盘有键按下时,产生SIGIO信号。
简要介绍了实现异步输入的两种方法:文件描述块的O_ASYNC和POSIX标准的aio_read。
总的来说,本章介绍了如何用计时器产生信号、对信合(不同信号、单个/多个信号)的处理。
一、内容概要
本章任务:完成单人弹球游戏先用curses库编写“hello,world”,然后用sleep()实现动画效果。
Sleep() make the calling thread sleep until secondshave elapsed or a signal arrived that is not ignored.
1、计时器
用alarm 和 pause 函数实现sleep()功能。Pause()挂起进程知道一个信号到达。Alarm设置本进程的计时器到达seconds秒后激发SIGALRM信号。
间隔计时器(interval timer)。与alarm相比,更复杂的计时功能,用getitimer, setitimer配置。Interval timer可以以更高的精度控制计时器不间断的发送SIGALRM信号。
计时器总是用来定时发送SIGALRM。
2、信号处理
Chapter 6介绍了用signal()处理信号,本章介绍了更复杂的signacton()处理信号。Signaction不仅可以指定信号处理函数,还可以指定是否阻塞某个信号的处理等。
后面的游戏代码中只用到了signal。
3、阻塞信号
专门的配置进程是否阻塞某信号的函数:sigprocmask。阻塞信号通常是为了防止数据损毁。
配置进程的阻塞信号属性可以使用signaction和sigprocmask。
Sigprocmask在后面的游戏代码中也没有用到。
4、弹球游戏
用interval timer不间断差生SIGALRM信号,用signal处理信号,触发信号处理接口,控制弹球的位置和实现动画效果。
用while(1)循环和getchar实现对键盘输入的监控,控制弹球的速度和方向。
5、异步输入
无需用while(1)和getchar阻塞的监听键盘,而是键盘有键按下时,产生SIGIO信号。
简要介绍了实现异步输入的两种方法:文件描述块的O_ASYNC和POSIX标准的aio_read。
总的来说,本章介绍了如何用计时器产生信号、对信合(不同信号、单个/多个信号)的处理。
相关文章推荐
- Understanding Unix/Linux Programming-事件驱动编程:编写一个视频游戏
- 三. 学习Unix/Linux编程之事件驱动编程:编写一个视频游戏
- Understanding Unix/Linux Programming 笔记:chapter 13:基于数据报(Datagram)的编程:编写许可证服务器
- 《unix/linux编程实践教程》学习笔记:第七章 事件驱动编程:编写一个视频游戏
- 第7章 事件驱动编程:编写一个视频游戏
- Understanding Unix/Linux Programming 笔记:chapter 12:连接和协议:编写Web服务器
- Understanding Unix/Linux Programming 笔记:chapter 9:可编程的shell、shell变量和环境; chapter 10:I/O重定向和管道
- Understanding Unix/Linux Programming 笔记:chapter 8:进程和程序:编写命令解释器sh
- Understanding Unix/Linux Programming 笔记:chapter 11:连接到近端或远端的进程:服务器与Socket(套接字)
- Understanding Unix/Linux Programming note:chapter 6:为用户编程:终端控制和信号
- Understanding Unix/Linux Programming 笔记:chapter 14:线程机制:并发函数的使用
- Understanding Unix/Linux Programming 笔记:chapter 15:进程间通信(IPC)
- Understanding Unix/Linux Programming note:chapter 1:more函数的流程图
- Understanding Unix/Linux Programming note:chapter 1:执行可执行文件时的参数传递
- Understanding Unix/Linux Programming note:chapter 2, chapter 3, chapter 4
- Understanding Unix/Linux Programming-时钟编程:Alarms
- 韩顺平 javascript教学视频_学习笔记27_dom对象(window对象3.history.location.navigator.screen.event)_js事件驱动编程
- Understanding Unix/Linux Programming note:chapter 5:连接控制:学习stty
- Java学习笔记(15)Event-Driven Programming and Animations 事件驱动编程与动画
- 使用Java语言进行2D游戏编程基础 Fundamental 2D Game Programming with Java 全书笔记(未完结)