當你在unix shell上鍵入(不需要命令)時會發生什麼?更具體地說,當您在shell中輸入時,後臺發生了什麼?當你在unix shell上鍵入時會發生什麼
回答
你必須瞭解計算機系統架構,才能真正知道發生了什麼,但基本上你的計算機有2個等級,1個硬件和2個軟件。
硬件被分解成許多東西,但對於你的問題最重要的是鍵盤和屏幕。所以如果你在鍵盤上打字,必須有一些軟件來顯示你在屏幕上輸入的內容。在現代系統(如此網頁)中,它由(至少)2層軟件處理。
操作系統是底層的一套子系統,它們將所有部分連接在一起(大致)爲服務,即打字服務,磁盤服務,網絡服務,顯示服務以及許多其他更常見的技術這些東西'互相交談。
用於顯示您在網頁中輸入的內容的軟件(面向用戶)的最終級別由您正在使用的瀏覽器軟件提供。操作系統將按鍵,鼠標點擊等的值傳遞給瀏覽器,瀏覽器決定如何處理它們。
因此,Unix命令行也是2層,操作系統級別,協調服務(鍵盤到屏幕)。要知道您的擊鍵有與OS的任何會議,您必須啓動旨在接收和顯示輸入和輸出的應用程序。當你在命令行中輸入時,操作系統將按鍵發送到你的shell程序bash,ksh,zsh等等。
只有當你敲入回車鍵時,shell纔會執行某些操作,而且基本上,它只有當你按下回車鍵時才知道要做的事情是掃描回來並閱讀你輸入的內容它會假設你知道你在做什麼,你輸入的是你係統支持的有效命令。它還有許多關於如果遇到文本被認爲是shell的特性(如環境變量($ {MyName})),管道|
有幫助連接2個程序以將數據從左側程序發送到右側程序的許多規則,手動程序,以及許多其他功能。
所以,你不想特別知道shell中發生了什麼,所以答案是,操作系統正在從鍵盤獲取活動,並且因爲你必須運行一個shell(或其他程序)來接受從鍵盤輸入,OS將這些按鍵值傳遞到正在運行的程序中。
(看你的其他問題貼,我道歉的性質,如果這是太傻;-(,但是......)
我希望這有助於。
您可以使用strace
來了解Linux上的程序(例如/bin/bash
或其他shell或任何其他程序)涉及的系統調用。通過免費(例如GPL許可)軟件外殼,您可以查看其源代碼以瞭解更多關於它們的信息。你甚至可以用調試信息編譯它們,並使用調試器來檢查它們是否工作。
- 1. 當你不加入你的主題時會發生什麼?
- 2. 當你在瀏覽器中輸入URL時會發生什麼
- 3. 在UNIX shell中運行exec csh會發生什麼?爲什麼?
- 4. 當我使用'。'執行一個unix shell腳本時會發生什麼?命令?
- 5. 你怎麼做到這一點,當你按下一個鍵會發生什麼
- 6. 當你同時觸摸兩個按鈕時會發生什麼
- 7. 在Python中,當你在函數內部導入時會發生什麼?
- 8. 當你rm文件時會發生什麼?
- 9. 當你運行一個程序時會發生什麼?
- 10. 當你調用UItableview的重裝兩次時會發生什麼
- 11. 當你從C啓動A到B時會發生什麼?
- 12. 當你邏輯不是浮動時會發生什麼?
- 13. 當你JAR而不是WAR時,會發生什麼情況
- 14. Erlang:當你f()中的一個Pid時會發生什麼?
- 15. 當你停止VS調試器時會發生什麼?
- 16. 當你增加數組時,會發生什麼。 {A [in.nextInt()] ++;}
- 17. 當你使用unbind()失敗時會發生什麼?
- 18. 當你插入一個新的USB設備時會發生什麼?
- 19. 當我ping 127.0.0.1時會發生什麼
- 20. 當redis重載時會發生什麼?
- 21. 當crontabs重疊時會發生什麼?
- 22. 當AsyncTasks已滿時會發生什麼?
- 23. 當我編譯時會發生什麼?
- 24. 當您不在Flash中嵌入字體時會發生什麼?
- 25. 當窗口切換焦點時按鍵會發生什麼
- 26. swf嵌入時會發生什麼?
- 27. 當在IEnumerable上調用ToArray()時會發生什麼?
- 28. 當發生javascript運行時錯誤時會發生什麼?
- 29. 什麼是H.450.2?當它不存在時會發生什麼?
- 30. 當你突然投入大型項目時,你會做什麼?
其實readline的放終端在非規範模式下,並立即對每個字符作出反應 – ninjalj
是的,這聽起來是對的,我將它歸類爲子系統之一(由bash啓動?)。感謝分享。 – shellter