网站大量收购闲置独家精品文档,联系QQ:2885784924

Chapter6-为用户编程:终端控制和信号.ppt

Chapter6-为用户编程:终端控制和信号.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
下面的这个版本捕捉SIGINT,重置驱动程序,然后返回no的代码 #include stdio.h #include termios.h #include fcntl.h #include string.h #include signal.h #define ASK Do you want another transaction #define TRIES 3 /* max tries */ #define SLEEPTIME 2 /* time per try */ #define BEEP putchar(\a) /* alert user */ main() { int response; void ctrl_c_handler(int); tty_mode(0); set_cr_noecho_mode(); set_nodelay_mode(); signal( SIGINT, ctrl_c_handler ); signal( SIGQUIT, SIG_IGN ); response = get_response(ASK, TRIES); tty_mode(1); return response; } 6.5 为处理信号做准备:play_again4.c 程序使用signal来告诉内核它需要忽略那些信号。如果有人编写了一个将所有类型的信号设置为SIG_IGN,然后执行一个无限循环将会如何呢? 幸好,对系统管理员(和程序员)来说,Unix不可能让一个程序永不停止。有两个信号是不能被忽略和捕抓的。阅读手册或头文件中的信号列表,看看哪些信号是不可阻挡的 6.6 进程终止 这三个方面对所有的设备都适用。考虑一块声卡或一个磁盘驱动程序。设备有许多种由设备驱动程序控制的设置,需要了解这些设置。同样,程序必须实现特定的功能,调整驱动程序以满足这些需求。最后,很多设备驱动程序会产生信号报告错误或特定事件。磁盘驱动程序可能在结束从磁盘到内存数据块的复制时发送一个信号,程序必须能够对这些信号作出响应。 6.7 为设备编程 现在已经了解了编写终端控制程序的三个方面。首先,学习了驱动程序的属性和如何控制连接。然后,学习了应用程序的特定需求,并调整驱动程序以满足这些需求。最后,学习了如何处理信号——中断的一种形式。 1. 主要内容 有些程序处理从特定设备来的数据。这些与特定设备相关的程序必须控制与设备的连接。Unix系统中最常见的设备是终端。 键盘输入分为3类,终端驱动程序对这些输入做不同的处理。大多数键代表常规数据,它们从驱动程序传输到程序。有些键调用驱动程序中的编辑函数。如果按下删除键,驱动程序将前一个字符从它的行缓冲中删除,并将命令发送到终端屏幕,使之从显示器中删除字符。最后,有些键调用处理控制函数。Ctrl-C健告诉驱动程序调用内核中某个函数,这个函数给进程发送一个信号。终端驱动程序支持若干种处理控制函数,它们都通过发送信号到进程来实现控制。 小结 2. 进一步问题 Unix系统总是从很多终端或其他设备接收数据。用户可能在任何时刻输入数据,内核必须处理这些输入。Unix系统同时运行若干个程序。内核如何在同一时刻维护多个并发的任务并对多个不可预知的中断做出响应呢?下一章将通过编写一个计算机游戏程序来探讨这个问题。 终端驱动程序有很多设置。各个设置的特定值决定了终端驱动程序的模式。为用户编写的程序通常需要设置终端驱动程序为特定的模式。 信号是从内核发送给进程的一种简短消息。信号可能来自用户、其他进程或内核本身。进程可以告诉内核,在它收到信号是需要做出怎样的响应 Unix/Linux编程 北京化工大学 信息科学与技术学院计算机系 易军凯 yijk@mail.buct.edu.cn 第6章 为用户编程:终端控制和信号 概念与技巧 软件工具与用户程序 读取和修改终端驱动程序的设置 终端驱动程的模式 非阻塞输入 用户的超时 对信号的介绍:Ctrl-C是如何工作的 相关的系统调用 fcntl signal 主要内容: 6.1 软件工具与针对特定设备编写的程序 6.2 终端驱动程序的模式 6.3 编写一个用户程序:play_again.c 6.4 信号 6.5 为处理信号做准备: play_again4.c 6.6 进程终止 6.7 为设备编程

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档