亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

終端I/O之特殊輸入字符

2024-06-28 13:27:43
字體:
來源:轉載
供稿:網友
終端I/O之特殊輸入字符

POSIX.1定義了11個在輸入時作特殊處理的字符。實現定義了另外一些特殊字符。表18-6摘要列出了這些特殊字符。

表18-6 終端特殊輸入字符

在POSIX.1的11個特殊字符中,可將其中9個更改為幾乎任何值。不能更改的兩個特殊字符是換行符和回車符(/n和/r),有些實現也不允許更改STOP和START字符。為了進行修改,只要更改termios結構中c_cc數組的相應項。該數組中的元素都用名字作為下標進行引用,每個名字都以字母V開頭。

POSIX.1允許禁用這些字符。若將c_cc數組中的某項設置為_POSIX_VDISABLE的值,則禁用相應的特殊字符。

實例

在詳細說明各特殊字符之前,先看一個更改特殊字符的程序。程序清單18-1禁用中斷字符,并將文件結束符設置為Ctrl+B。

程序清單18-1 禁用中斷字符和更改文件結束字符

#include "apue.h"

#include <termios.h>

int

main(void)

{

struct termiosterm;

longvdisable;

if(iastty(STDIN_FILENO) == 0)

err_quit("standard input is not a terminal device");

if((vdisable = fpathconf(STDIN_FILENO, _PC_VDISABLE)) < 0)

err_quit("fpathconf error or _POSIX_VDISABLE not in effect");

if(tcgetattr(STDIN_FILENO, &term) < 0)/* fetch tty state */

err_sys("tcgetattr error");

term.c_cc[VINTR] = vdisable;/* disable INTR character */

term.c_cc[VEOF] = 2;/* EOF is Control-B */

if(tcsetattr(STDIN_FILENO, TCSAFLUSH, &term) < 0)

err_sys("tcsetattr error");

exit(0);

}

對此程序要說明以下幾點:

  1. 僅當標準輸入是終端設備時才修改終端特殊字符。調用isatty對此進行檢測。
  2. 用fpathconf取_POSIX_VDISABLE值。
  3. 函數tcgetattr從內核取termios結構。在修改了此結構后,調用tcsetattr函數設置屬性,這樣就可以進行我們所希望的修改,而其他屬性則保持不變。
  4. 禁用中斷鍵與忽略中斷信號是不同的。程序清單18-1所做的是禁止使用使終端驅動程序產生SIGINT信號的特殊字符。但仍可使用kill函數向進程發送該信號。

下面較詳細地說明各個特殊字符。我們稱這些字符為特殊輸入字符,但是其中STOP和START(Ctrl+S和Ctrl+Q)兩個字符在輸出時也對它們進行特殊處理。注意,這些字符中的大多數在被終端驅動程序識別并進行特殊處理后都被丟棄,并不將它們傳送給執行讀終端操作的進程。例外的字符是換行符(NL,EOL,EOL2)和回車符(CR)。

CR 回車符。不能更改此字符。以規范模式進行輸入時識別此字符。當設置了ICANON(規范模式)和ICRNL(將CR映射為NL)并且沒有設置IGNCR(忽略CR)時,將CR轉換成NL,并產生于NL符相同的作用。此字符返回給讀進程(多半是轉換成NL后)。

DISCARD刪除符。在擴充模式下(IEXTEN),在輸入中識別此字符。在輸入另一個DISCARD符之前或刪除條件被清除之前(見FLUSHO選項),此字符使后續輸出都被刪除。在處理后此字符即被刪除,不送向讀進程。

DSUSP 延遲-掛起作業控制字符(delayed-suspend job-control character)。在擴充方式下,若支持作業控制并且ISIG標志被設置,則在輸入中識別此字符。與SUSP字符的相同處是:延遲-掛起字符產生SIGTSTP信號,它被送至前臺進程組中的所有進程。但是延遲-掛起字符產生信號的時間并不是在鍵入此字符時,而是在一個進程讀控制終端讀到此字符時。在處理后,此字符即被刪除,不送向讀進程。

EOF 文件結束符。以規范模式(ICANON)進行輸入時識別此字符。當鍵入此字符時,等待被讀的所有字節都立即傳送給讀進程。如果沒有字節等待讀,則返回0。在行首輸入一個EOF符是向程序指示文件結束的正常方式。在以規范模式處理后,此字符即被刪除,不送向讀進程。

EOL 附加的行定界符,與NL作用相同。以規范模式(ICANON)進行輸入時識別此字符,并將此字符返回給讀進程。但通常不使用此字符。

EOL2另一個行定界符,與NL作用相同。對此字符的處理方式與EOL字符相同。

ERASE 擦除字符(退格)。以規范模式(ICANON)輸入時識別此字符。它擦除行中的前一個字符,但不會超越行首字符擦除上一行中的字符。在以規范模式處理后此字符即被刪除,不送向讀進程。

ERASE2 另一個擦除字符(退格)。對此字符的處理與ERASE完全相同。

INTR 中斷字符。若設置了ISIG標志,則在輸入中識別此字符。它產生SIGINT信號,該信號被送至前臺進程組中的所有進程。在處理后,此字符即被刪除,不送向讀進程。

KILL kill(殺死)字符。(名字"殺死"在這里又一次被誤用,會議kill函數,它將一個信號發送給進程。此字符應被稱為行擦除符,它與信號毫無關系。)以規范模式(ICANON)輸入時識別此字符。它擦除一整行。在處理后,此字符即被刪除,不送向讀進程。

LNEXT "字面上的下一個"字符(literal-next character)。以擴充方式(IEXTEN)輸入時識別此字符,它使下一個字符的任何特殊含義都被忽略。使用這一字符可向程序鍵入任何字符。在處理后,LNEXT字符即被刪除,但輸入的下一個字符(即使是特殊字符)則被傳送給讀進程。

NL 新行字符,它也被稱為行定界符。不能更改此字符。以規范模式(ICANON)輸入時識別此字符。此字符返回給讀進程。

QUIT推出字符。若設置了ISIG標志,則在輸入中識別此字符。它產生SIGQUIT信號,該信號又被送至前臺進程組中的所有進程。在處理后,此字符即被刪除,不送向讀進程。

REPRINT再打印字符。以擴充規范模式(設置了IEXTEN和ICANON標志)進行輸入時識別此字符。它使所有未讀的輸入被輸出(再回顯)。在處理后,此字符即被刪除,不送向讀進程。

START 啟動字符。若設置了IXON標志則在輸入中識別此字符;若設置IXOFF標志則作為輸出自動產生此字符。在IXON已設置時接收到的START字符使停止的輸出(由以前輸入的STOP字符造成的)重新啟動。在此情形下,此字符處理后即被刪除,不送向讀進程。在IXOFF標志被設置時,若輸入不會使輸入緩沖區溢出,則終端驅動程序自動地產生一START字符以恢復以前被停止的輸入。

STATUSBSD的狀態-請求字符。以擴充規范模式(設置IEXTEN和ICANON標志)進行輸入時識別此字符。它產生SIGINFO信號,該信號又被送至前臺進程組中的所有進程。另外,如果沒有設置NOKERNINFO標志,則有關前臺進程組的狀態信息也顯示在終端上。在處理后,此字符即被刪除,不送向讀進程。

STOP 停止字符。若設置了IXON標志,則在輸入中識別此字符;若IXOFF標志已設置則作為輸出自動產生此字符。在IXON已設置時接受到STOP字符則停止輸出。在此情形下,處理后刪除此字符,不送向讀進程。當輸入一個START字符后,停止的輸出重新啟動。在IXOFF設置時,終端驅動程序自動地產生一個STOP字符以防止輸入緩沖區溢出。

SUSP 掛起作業控制字符。若支持作業控制并且ISIG標志已設置,則在輸入中識別此字符。它產生SIGTSTP信號,該信號又被送至前臺進程組的所有進程。在處理后,此字符即被刪除,不送向讀進程。

WERASE字擦除字符。以擴充規范模式(設置IEXTEN和ICANON標志)進行輸入時識別此字符。它擦除前一個字。首先,它向后跳過任一空白字符(空格或制表符),然后再向后越過前一個記號(token),使光標處在前一個記號的第一個字符位置上。通常,前一個記號在碰到一個空白字符時即終止。但是,可用設置ALTWERASE標志來改變這一點。此標志使前一個記號在碰到第一個非字母、數字符時即終止。在處理后,此字符即被刪除,不送向讀進程。

需要為終端設備定義的另一個"字符"是BREAK。BREAK實際上并不是一個字符,而是在異步串行數據傳送時發生的一個條件。依賴于串行接口,可以有多種方式通知設備驅動程序發生了BREAK條件。

對于異步串行數據傳送,BREAK是一個0值的位序列,其持續時間長于要求發送一個字節的時間。整個0值位序列被視為是一個BREAK。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品日韩欧美综合| 国产精品一区二区三区久久| 亚洲国产成人精品久久| 日韩欧美国产免费播放| 久久精品国产69国产精品亚洲| 国产999精品视频| 国产精品爽爽爽| 国产91亚洲精品| 亚洲男女自偷自拍图片另类| 午夜欧美不卡精品aaaaa| 亚洲福利视频久久| 日韩精品高清视频| 久久久久久久久久av| 国产九九精品视频| 欧美午夜精品久久久久久久| 77777少妇光屁股久久一区| 国产精品久久久久av免费| 亚洲欧美国产日韩天堂区| 亚洲新声在线观看| 国产精品极品美女粉嫩高清在线| 国外日韩电影在线观看| 国产精品久久在线观看| 成人免费视频网址| 欧美巨大黑人极品精男| 欧美一区二区三区四区在线| 欧美亚洲在线观看| 亚洲国产精久久久久久久| 亚洲美女www午夜| 亚洲欧美日韩一区二区三区在线| 九九九久久久久久| 国产精品日韩电影| 色综久久综合桃花网| 91国产精品电影| 青青久久aⅴ北条麻妃| 亚洲精品欧美一区二区三区| 亚洲国产精品大全| 伊人久久五月天| 欧美亚洲在线观看| 亚洲人免费视频| 高潮白浆女日韩av免费看| 国产婷婷97碰碰久久人人蜜臀| 色在人av网站天堂精品| 日韩在线观看免费| 国产精品久久久久久搜索| 欧美激情aaaa| 韩日欧美一区二区| 久久婷婷国产麻豆91天堂| 国产欧美最新羞羞视频在线观看| 国内外成人免费激情在线视频| 亚洲成人激情视频| 亚洲欧美日韩高清| 亚洲第一网站男人都懂| 狠狠综合久久av一区二区小说| 久久久久久久久久久久久久久久久久av| 欧美劲爆第一页| 高清欧美一区二区三区| 国产精品视频xxx| 日韩av中文字幕在线免费观看| 日韩大陆欧美高清视频区| 精品色蜜蜜精品视频在线观看| 亚洲色图综合久久| 欧美激情免费看| 亚洲美女视频网站| 日韩精品久久久久久久玫瑰园| 亚洲精品一区二区三区婷婷月| 91美女高潮出水| 国产一区二区三区视频免费| 日韩午夜在线视频| 狠狠色狠狠色综合日日五| 不卡av在线网站| 97香蕉久久超级碰碰高清版| 久久不射热爱视频精品| 91美女高潮出水| 国产精品永久在线| 国产激情综合五月久久| 日韩中文字幕在线观看| 国产在线观看一区二区三区| 国产精品美女无圣光视频| 日韩精品在线观看一区二区| 在线亚洲男人天堂| 中文字幕免费国产精品| 国产999精品视频| 欧美一级成年大片在线观看| 色中色综合影院手机版在线观看| 国产在线精品成人一区二区三区| 91亚洲va在线va天堂va国| 亚洲18私人小影院| 中文字幕欧美日韩va免费视频| 久久99精品视频一区97| 色爱av美腿丝袜综合粉嫩av| 亚洲精品美女网站| 亚洲国产日韩精品在线| 国产精品91一区| 中文字幕亚洲欧美在线| 一区二区三区国产在线观看| 欧美性受xxxx白人性爽| 北条麻妃一区二区在线观看| 国产第一区电影| 精品国产自在精品国产浪潮| 欧美制服第一页| 美日韩精品视频免费看| 操人视频在线观看欧美| 久久香蕉国产线看观看av| 国产在线98福利播放视频| 久久人人爽人人爽爽久久| 欧美激情videoshd| 日韩电影视频免费| 97精品国产97久久久久久春色| 欧美在线一区二区三区四| 欧美在线观看www| 色先锋久久影院av| 91久久久久久久久久| 搡老女人一区二区三区视频tv| 久久亚洲春色中文字幕| 日韩精品视频免费在线观看| 黑人巨大精品欧美一区二区| 亚洲视频在线观看免费| 欧美成人黑人xx视频免费观看| 91色视频在线观看| 国产精品一区二区三区在线播放| 色综合色综合网色综合| 成人免费福利在线| 亚洲日韩中文字幕| 中文字幕日韩精品在线观看| 国产精品久久久久久久久久东京| 亚洲a级在线播放观看| 亚洲国产精品999| 成人黄色在线观看| 日本成熟性欧美| zzijzzij亚洲日本成熟少妇| 亚洲午夜女主播在线直播| 国产精品草莓在线免费观看| 成人黄色免费在线观看| 亚洲人成网7777777国产| 亚洲欧美激情一区| 久久国产精品亚洲| 欧美精品www| 久久中文字幕一区| 精品国产老师黑色丝袜高跟鞋| 日韩精品一二三四区| 欧日韩不卡在线视频| 91精品国产综合久久香蕉最新版| 欧美日韩激情小视频| 久久偷看各类女兵18女厕嘘嘘| 日韩一中文字幕| 亚洲欧美中文日韩v在线观看| 欧美性生交xxxxxdddd| 91国产精品电影| 欧美日韩午夜视频在线观看| 91福利视频在线观看| 日韩在线视频网| 久久国内精品一国内精品| 国产精品日韩欧美| 久久久精品一区| 亚洲欧美另类人妖| 成人午夜在线观看| 91在线视频一区| 欧美天堂在线观看| 亚洲视频在线播放| 欧美福利在线观看| 久久久久久亚洲| 欧美精品国产精品日韩精品| 国产热re99久久6国产精品| 奇门遁甲1982国语版免费观看高清|