Understanding Unix/Linux Programming-终端控制和信号
生活随笔
收集整理的這篇文章主要介紹了
Understanding Unix/Linux Programming-终端控制和信号
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對磁盤文件和設備文件不加區分的程序稱為軟件工具。軟件工具從標準輸入讀取字節,進行一些處理,然后將包含結果的字節流寫到標準輸出。工具發送錯誤消息到標準錯誤輸出,它們也被當作簡單的字節流來處理。這些文件的描述符能夠連接到文件、終端、鼠標、光電管等等。工具對所處理的數據的源和目的不做任何假設。其它很多程序也能從命令行所指定的文件中讀取數據。
事實上,大多數進程自動將前三個文件描述符打開,即連接到stdin,stdout以及stderror,它們不需要調用open來與這三個文件建立連接。而軟件工具的輸入和輸出能夠被重定向到任何類型的連接上。
用戶程序的例子:vi,emacs等等。這些程序設置終端驅動程序的擊鍵和輸出處理方式。驅動程序有許多設置,但是用戶常用到的有
終端驅動程序的模式:
先通過簡短的轉換程序來深入理解設備驅動程序的細節:
?
1 /* rotate.c 2 * purpose:useful for showing tty modes 3 * map a->b , b->c , ... , y->z ; 4 */ 5 6 #include <stdio.h> 7 #include <stdlib.h> 8 #include <ctype.h> 9 10 int main() 11 { 12 int c ; 13 while( ( c = getchar()) != EOF ) 14 { 15 if(c == 'z') 16 { 17 c = 'a'; 18 } 19 else if( islower(c)) 20 { 21 c++ ; 22 } 23 putchar(c) ; 24 } 25 return 0 ; 26 }使用tr命令能夠達到同樣的效果,但是tr的GNU版本具有輸入緩沖,以上是一個不帶緩沖的具體例子。這個程序中,rotate程序是和終端驅動器交換數據的,而終端驅動器從鍵盤輸入數據并且從屏幕輸出數據。
規范模式:緩沖和編輯
使用默認設置運行這個程序,我們發現,緩沖、編輯、回顯和控制鍵的處理都由終端驅動程序完成了。緩沖和編輯包含規范處理,當這些特征被啟動,終端連接被成為處于規范模式。
非規范處理:
如果使用“stty -icanon”關閉了終端驅動程序的規范模式處理,則上述程序的處理方式被改變了。
特別地,非規范模式沒有緩沖,輸入一個字符就會立即被送到程序rotate處理并且立即回顯。
終端模式小結:
也成為cooked模式,是用戶常見模式。驅動程序輸入的字符保存在緩沖區,在接收回車鍵時才將這些緩沖數據發送到程序。緩沖的數據可以實現最基本的編輯、刪除功能。
當所有處理都被關閉之后,驅動程序直接將輸入傳遞給程序。在這種情況下,驅動程序被成為raw模式。
轉載于:https://www.cnblogs.com/NJdonghao/p/5286300.html
總結
以上是生活随笔為你收集整理的Understanding Unix/Linux Programming-终端控制和信号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySql优化的方法
- 下一篇: 手机访问PC网站自动跳转到手机网站代码