日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Understanding Unix/Linux Programming-终端控制和信号

發布時間:2025/7/14 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Understanding Unix/Linux Programming-终端控制和信号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 軟件工具:從文件或者stdin讀取數據寫到stdout
      對磁盤文件和設備文件不加區分的程序稱為軟件工具。軟件工具從標準輸入讀取字節,進行一些處理,然后將包含結果的字節流寫到標準輸出。工具發送錯誤消息到標準錯誤輸出,它們也被當作簡單的字節流來處理。這些文件的描述符能夠連接到文件、終端、鼠標、光電管等等。工具對所處理的數據的源和目的不做任何假設。其它很多程序也能從命令行所指定的文件中讀取數據。
      事實上,大多數進程自動將前三個文件描述符打開,即連接到stdin,stdout以及stderror,它們不需要調用open來與這三個文件建立連接。而軟件工具的輸入和輸出能夠被重定向到任何類型的連接上。
  • 特定設備程序:為特定應用控制設備  其它程序,如控制掃描儀、記錄壓縮盤、操作磁盤驅動程序和拍攝數碼相片的程序也能同特定設備進行交互。書中通過終端與人交互的程序來探討寫這些程序時用到的概念和技術。將這些面向終端的程序稱為用戶程序。
  • 用戶程序
    用戶程序的例子:vi,emacs等等。這些程序設置終端驅動程序的擊鍵和輸出處理方式。驅動程序有許多設置,但是用戶常用到的有
  • 立即響應的擊鍵事件
  • 有限的輸入集
  • 輸入的超時
  • 屏蔽Ctrl-C
  • 終端驅動程序的模式:

      先通過簡短的轉換程序來深入理解設備驅動程序的細節:

    ?

    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模式每個處理步驟都被一個獨立的位控制。例如,ISIG的位控制Ctrl-C是否用于終止一個程序。
    當所有處理都被關閉之后,驅動程序直接將輸入傳遞給程序。在這種情況下,驅動程序被成為raw模式。
  • 轉載于:https://www.cnblogs.com/NJdonghao/p/5286300.html

    總結

    以上是生活随笔為你收集整理的Understanding Unix/Linux Programming-终端控制和信号的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。