SIGINT信
号,该信号被送至前台进程组中的任何进程(见图97)。在处理后,此字符即被删
除,不送
向读进程。
KILL〓POSIX1的kill(消灭)字符。(名字"消灭"在这里又一次被误用,他应被称
为行擦
除符。)以规范方式输入识别此字符。他擦除整个1行。在处理后,此字符即被删除
,不送向
读进程。
NL〓POSIX1的新行字符,他也被称为行定界符。不能更改此字符。以规范方式输
入时识别
此字符。此字符返回给读进程。
QUIT〓POSIX1的退出字符。若配置了ISIG标志,则在输入中识别此字符。他产生
SIGQUIT
信号,该信号又被送至前台进程组中的任何进程(见图97)。在处理后,此字符即
被删除,
水送向读进程。
回忆图101,INTR和QUIT之间的区别是:QUIT字符不但按默认终止进程,而且也
产生core
文档。
REPRINT〓SVR4和43 BSD再打印字符。以扩充规范方式(配置了IEXTEN和ICANON标
志)进行
输入时识别此字符。他使任何末读的输入被输出(再回送)。在处理后,此字符即被
删除,不
送向读进程。
START〓POSIX1的起动字符。若配置了IXON标志则在输入中识别此字符,若配置
IXOFF标志
,则作为输出自动产生此字符。在IXON已配置时接收到的START字符使停止的输出
(由以前输
入的STOP字符造成)重新起动。在此情形下,在处理后,此字符即被删除。不送向
读进程。
在XOFF标志配置时,若输入不会使输入缓存溢出,则终端驱动程式自动地产生一S
TART字符
以恢复以前被停止的输入。
STATUS〓43 BSD的状态-需要字符。以扩充、规范方式进行输入时识别此字符。
他产生SIG
INFO信号,该信号又被送至前台进程组中的任何进程(见图97)。另外,假如没有
配置NOKE
RNINFO标志,则有关前台进程组的状态信息也显示在终端上。在处理后,此字符即
被删除,
不送向读进程。
STOP〓POSIX1的停止字符。若配置了IXON标志,则在输入中识别此字符,若IXO
FF标志已
配置则作为输出自动产生此字符。在IXON已配置时接收到的STOP字符停止输出。在
此情形下
,在处理后删除此字符,不送向读进程。当输入一个RESTART字符后,停止的输出
重新起动
。
在IXOFF配置时,终端驱动程式自动地产生一个STOP字符以防止输入缓存溢出。
SUSP〓POSIX1挂起作业控制字符。若支持作业控制并且ISIG标志已配置,则在输
入中识别
此字符。他产生SIGTSTP信号,该信号又被送至前台进程组的任何进程(见图97)
。在处理
后,此字符即被删除,不送向读进程。
WERASE〓SVR4和43 BSD的字擦除字符。以扩充、规范方式进行输入时识别此字符
。他使前
一个字被擦除。首先,他向后跳过任一白空字符(空格或制表符),然后向后越过前
一记号,
使光标处在前一个记号的第一个字符位置上。通常,前一个记号在碰到一个白空字
符时即终
止。但是,可用配置ALTWERASE标志来改变这一点。
此标志使前一个记号在碰到第一个非字母、数字符时即终止。在处理后,此字符即
被删除,
不送向读进程。
需要为终端设备定义的另一个"字符"是BREAK。BREAK实际上并不是个字符,而是
在异步
串行数据传送时发生的一个条件。依赖于串行界面,能够有多种方式通知设备驱动
程式发生
了BREAK条件。大多数终端有一个标记为BREAK的键,用其能够产生BREAK条件,这
就使得很
多人认为BREAK就是个字符。对于异步串行数据传送,BREAK是个0值的二进位
序列,其
继续时间长于需要发送一个字节的时间。整个0值二进位序列被视为是个BREAK。
在118
节中将说明如何发送一个BREAK。
114〓获得和配置终端属性
使用函数tcgetattr和tcsetattr能够获得或配置termios。这样也就能够检测和修
改各种终端选择标志和特别字符,以使终端按我们所希望的方式进行操作。
#include<termios.h>
int tegetattr(int filedes,struct,termios * termptr);
int tcsetattr(int filedes,int opt,const struct termios * termptr);
两个函数返回:看成功为0,出错为-1Both return:0if OK,-1 on error
这两个函数都有一个指向termios结构的指针作为其参数,他们或返回当前终端
的属性,或配置该终端的属性。因为这两个函数只对终端设备进行操作,所以若
filedes并不引用一个终端设备则出错返回,error配置为ENOTTY。
tcsetattr的参数opt使我们能够指定在什么时候新的终端属性才起作用。opt能够
指定为下列常数中的一个:
TCSANOW〓更改立即发生。
TCSADRAIN〓发送了任何输出后更改才发生。若更改输出参数则应使用此选项。
TCSAFLUSH〓发送了任何输出后更改才发生。要进一步,在更改发生时未读的任何
输入数据都被删除(刷清)。
tcsetattr函数的返回值易于产生混淆。假如他执行了任何一种所需要的动作,即
使未能执
行,任何需要的动作,他也返回0(表示成功)。假如该函数返回0,则我们有责任检
查该函数
是否执行了任何需要的动作。这就意味着,在调用tcsetattr配置所希望的属性后
,需调用t
cgetattr,然后将实际终端属性和所希望的属性相比较,以检测两者是否有区别。
115〓终端选择标志
本节对图113中列出的各个终端选择标志按字母顺序作进一步说明,也指出该选
择项出现
在四个终端标志字段中的哪一个,连同该选择项是否是POSIX1定义的,或是受到
SVR4或4
3 BSD支持的。
任何列出的选择标志(除屏蔽标志外)都用一个或几个二进制位表示,而屏蔽标志则
定义从个
二进制位。屏蔽标志有一个定义名,每个值也有一个名字。例如,为了配置字符长
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



