終端那些事

終端那些事


終端驅動屬於對特定設備編寫的程序。


1、軟件工具和對特定設備編寫的程序

所謂軟件工具,就是日常用到的lswhogrep等不區分磁盤文件和設備文件的應用程序。

軟件工具用於對輸入數據處理,獲得輸出。
這一流程和三個詞密切相關——標準輸入、標準輸出和標準錯誤輸出

在這裏插入圖片描述

軟件工具對數據來源和目的地不做任何假設,只是處理輸入獲得輸出

而針對特定設備編寫的程序,會根據設備的特性處理一些獨有的概念,
這不同於軟件工具對數據去留不加註意的特性。

終端的規範處理

  • 一般使用的終端顯示設備會回顯我們的輸入,支持對輸入的編輯。終端這樣工作模式,稱爲終端的規範模式

回顯就是把輸入顯示在屏幕上,而要實現編輯輸入,就需要對輸入進行緩存
終端的這些功能都能通過終端驅動進行設置。
命令stty和系統調用tcsetattr()提供了修改接口。

對應的,緩衝和回顯被關閉的模式,稱爲終端的非規範模式。

而在終端處於存在感更低的raw模式時,輸入數據不加處理被直接送給程序。
從這個角度看,終端驅動可以被理解成輸入數據的預處理器。


看似多餘的模式

  • 上述幾個模式似乎沒有必要(何必要削減豐富的功能呢?)
    事實上他們卻十分常用。

a、即時響應

  • 有時我們不需要編輯輸入,而希望輸入立即得到程序響應。例如在遊戲控制時希望確定的按鍵獲得確定的響應,就可以關閉終端的緩存,直接將數據送至對應處理程序,終端的非規範模式就派上用場。

b、無回顯

  • 不是所有的輸入都希望被人看到。例如可以關閉輸入密碼時的回顯,保護密碼安全

c、無阻塞

  • 某些命令/函數阻塞進程等待輸入(比如getchar),但我們不希望沒有輸入計算姬就一直等待下去,就像打電話不是要一直等到對方接聽。這時無阻塞模式就很有意義了。
    無阻塞模式是說,即使沒有獲得輸入,也退出,就像去餐廳吃飯,沒座位吃就退出來換個地方吃,不會一直等下去
    另外,無阻塞模式配合時間變量就能實現類似“等一會”的功能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章