- Linux程序設(shè)計(第4版)
- (英)Neil Matthew Richard Stones
- 903字
- 2021-04-09 20:04:51
5.3 終端驅(qū)動程序和通用終端接口
有時,程序需要更精細(xì)的終端控制能力,而不是僅通過簡單的文件操作來完成對終端的一些控制。Linux提供了一組編程接口用來控制終端驅(qū)動程序的行為,從而使得更好地控制終端的輸入和輸出。
5.3.1 概述
如圖5-1所示,你可以通過一組函數(shù)調(diào)用(通用終端接口,簡稱GTI)來控制終端,這組函數(shù)調(diào)用與用于讀寫數(shù)據(jù)的函數(shù)是分離的,這就使得讀寫數(shù)據(jù)的接口非常簡潔,同時又允許用戶可以對終端的行為進(jìn)行更精細(xì)的控制。但這并不意味著終端I/O接口也非常簡潔,相反,它需要支持大量不同類型的硬件。

圖5-1
用UNIX的術(shù)語來說,控制接口定義了一個“線路規(guī)程”,它使程序在指定終端驅(qū)動程序的行為時擁有極大的靈活性。
下面是你能夠控制的主要功能。
? 行編輯:是否允許用退格鍵進(jìn)行編輯。
? 緩存:是立即讀取字符,還是等待一段可配置的延遲之后再讀取它們。
? 回顯:允許控制字符的回顯,例如讀取密碼時。
? 回車/換行(CR/LF):定義如何在輸入/輸出時映射回車/換行符,比如打印\n字符時應(yīng)該如何處理。
? 線速:這一功能很少用于PC控制臺,但對調(diào)制解調(diào)器或通過串行線連接的終端就很重要。
5.3.2 硬件模型
在學(xué)習(xí)通用終端接口之前,你十分有必要先理解它所要驅(qū)動的硬件模型。
圖5-2所示的概念布局圖(某些早期UNIX站點的實際情況就是這樣)是讓一臺UNIX機(jī)器通過串行口連接一臺調(diào)制解調(diào)器,再通過電話線連接到用戶端的調(diào)制解調(diào)器,該調(diào)制解調(diào)器最終連接到用戶的終端。事實上,這正是某些小型ISP(因特網(wǎng)服務(wù)提供商)在因特網(wǎng)早期使用的一種配置情況。這種連接方式可以看作是客戶/服務(wù)器模型的一個“遠(yuǎn)親”,它用于程序運行在大型主機(jī)上,而用戶工作在啞終端的情況。

圖5-2
如果你工作在一臺運行著Linux系統(tǒng)的PC上,可能會認(rèn)為這個模型過于復(fù)雜。但因為本書的兩位作者都有調(diào)制解調(diào)器,所以如果愿意的話,就可以按照圖中的方式用一對調(diào)制解調(diào)器和電話線將兩人的電腦連接起來,并通過終端仿真程序(如minicom)遠(yuǎn)程登錄到對方的機(jī)器上。當(dāng)然,如今的快速寬帶接入已讓這種類型的連接方式過時,但這個硬件模型仍有其用處。
使用這樣一個硬件模型的好處是,絕大多數(shù)現(xiàn)實世界中的情況都只是這一最復(fù)雜情況的子集。如果這個模型忽略了一些功能,那么它就不能很好的支持各種現(xiàn)實情況。
- Puppet 4 Essentials(Second Edition)
- R語言數(shù)據(jù)分析從入門到精通
- 數(shù)據(jù)庫系統(tǒng)教程(第2版)
- Mastering Adobe Captivate 2017(Fourth Edition)
- 自己動手寫Java虛擬機(jī)
- C語言程序設(shè)計
- 從0到1:HTML+CSS快速上手
- Expert Android Programming
- The Data Visualization Workshop
- 用戶體驗增長:數(shù)字化·智能化·綠色化
- 精通Python自動化編程
- 微信小程序開發(fā)與實戰(zhàn)(微課版)
- .NET Standard 2.0 Cookbook
- Principles of Strategic Data Science
- ExtJS Web應(yīng)用程序開發(fā)指南第2版