2011-11-18 77 views

回答

2

你必須瞭解計算機系統架構,才能真正知道發生了什麼,但基本上你的計算機有2個等級,1個硬件和2個軟件。

硬件被分解成許多東西,但對於你的問題最重要的是鍵盤和屏幕。所以如果你在鍵盤上打字,必須有一些軟件來顯示你在屏幕上輸入的內容。在現代系統(如此網頁)中,它由(至少)2層軟件處理。

操作系統是底層的一套子系統,它們將所有部分連接在一起(大致)爲服務,即打字服務,磁盤服務,網絡服務,顯示服務以及許多其他更常見的技術這些東西'互相交談。

用於顯示您在網頁中輸入的內容的軟件(面向用戶)的最終級別由您正在使用的瀏覽器軟件提供。操作系統將按鍵,鼠標點擊等的值傳遞給瀏覽器,瀏覽器決定如何處理它們。

因此,Unix命令行也是2層,操作系統級別,協調服務(鍵盤到屏幕)。要知道您的擊鍵有與OS的任何會議,您必須啓動旨在接收和顯示輸入和輸出的應用程序。當你在命令行中輸入時,操作系統將按鍵發送到你的shell程序bash,ksh,zsh等等。

只有當你敲入回車鍵時,shell纔會執行某些操作,而且基本上,它只有當你按下回車鍵時才知道要做的事情是掃描回來並閱讀你輸入的內容它會假設你知道你在做什麼,你輸入的是你係統支持的有效命令。它還有許多關於如果遇到文本被認爲是shell的特性(如環境變量($ {MyName})),管道|有幫助連接2個程序以將數據從左側程序發送到右側程序的許多規則,手動程序,以及許多其他功能。

所以,你不想特別知道shell中發生了什麼,所以答案是,操作系統正在從鍵盤獲取活動,並且因爲你必須運行一個shell(或其他程序)來接受從鍵盤輸入,OS將這些按鍵值傳遞到正在運行的程序中。

(看你的其他問題貼,我道歉的性質,如果這是太傻;-(,但是......)

我希望這有助於。

+0

其實readline的放終端在非規範模式下,並立即對每個字符作出反應 – ninjalj

+0

是的,這聽起來是對的,我將它歸類爲子系統之一(由bash啓動?)。感謝分享。 – shellter

1

您可以使用strace來了解Linux上的程序(例如/bin/bash或其他shell或任何其他程序)涉及的系統調用。通過免費(例如GPL許可)軟件外殼,您可以查看其源代碼以瞭解更多關於它們的信息。你甚至可以用調試信息編譯它們,並使用調試器來檢查它們是否工作。

相關問題