终端控制与信号浅析
来源:互联网 发布:linux定时脚本 编辑:程序博客网 时间:2024/05/13 06:21
终端控制
程序在终端显示时会与程序本身有一些出入,比如在运行下面这段代码时运行时直接按回车,则两次的输出结果都是10,即\n的ASCII码。在printf输出\n时,终端显示\r\n,在getchar读入的时候ENTER,又被处理成\n。又比如我们都知道程序的I/O有缓冲区,能够暂存程序输入输出的信息等特点。
#include "stdio.h"int main(int argc, char const *argv[]){ char ch; ch = '\n'; printf("%d\n", ch); ch = getchar(); printf("%d\n", ch); return 0;}
这些东西都与本章的一个重点设备驱动器有关,当我们打开一个终端时,终端驱动器就调用了默认的设置,规范处理终端与程序之间的数据流,比如缓冲、编辑等功能。默认的顺序是:1、控制字符处理,2、回显,3、将”\r”转换成”\n”,4、输入编辑程序。规范处理也能够通过改变属性等变为非规范处理:如stty -icanon可关闭规范处理,stty -echo可关闭回显。通过调试设备驱动器的属性能够使程序的人机交互更人性化。
信号
运行一个进程时,ctrl_c能发出SIGINT信号中断程序,ctrl_d能发出SIGQUIT信号退出程序。然而实际上进程处理信号可以有三种属性可以条件:1、接收默认处理2、忽略信号3、调用一个函数(signal函数)。
result = singnal(int signum, void(*action)(int));
action可以是任意函数也可以是SIG_IGN(忽略信号)和SIG_DFL(将信号恢复为默认处理)两个特殊值。
异步信号与按键都属于键盘输入。默认状态下,常规的键盘输入将数据通过驱动程序传输到程序,而有些键则会调用驱动程序中的编辑函数,如按下退格键时,驱动程序将前一字符从行缓存中删除,并将命令发送到终端,使之从显示器中删除程序。而信号则是调用内核中的某个函数,给进程发送一个信号。
- 终端控制与信号浅析
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- SIGHUP信号与控制终端
- 《unix/linux编程实践教程》学习笔记:第六章 终端控制与信号
- 黑马程序员——OC语言基础:面向对象三大特性,封装、继承、多态
- ubuntu server 制作 wifi 发射
- 《Unix/linux编程实践教程》第六章部分习题
- 架构、框架、设计模式之间的关系简述
- 深入理解Java对象序列化
- 终端控制与信号浅析
- QML之Packge
- PHP 抓取 网站标题 <title></tile>里的内容
- BZOJ 1194 HNOI2006 潘多拉的盒子 BFS+Tarjan+拓扑序DP
- 设备控制小结
- Struts2中关于"There is no Action mapped for namespace / and action name"的总结
- hdu-4521 小明序列
- HTML5创业的另一种可能
- 【汇编】学习笔记——第五篇