什么是shell?
(1)shell是一個系統軟件,負責用戶和操作系統內核之間的交互,是產生進程的進程(通過linux系統調用fork,exec),主要負責解釋用戶的命令,進而實現用戶對進程的控制。
(2)shell也是一門腳本語言,擁有流程控制,變量,運算等,主要適用於Linux下的配置和運維。
(3)shell命令的本質是放在/bin目錄下的可執行程序,管道和重定向操作則是終端的三個標准文件描述符對可執行文件進行操作,從而實現的(具體略)。
(4)信號是事件驅動編程的核心,也是通過shell對進程進行控制的一個重要方式。
(5)具有環境變量,即有用戶,版本,當前目錄之類的信息,用於訪問控制。
(6)一個shell形成一個進程會話,其中的進程有前台后台之分。
本次實驗中Python實現的shell是什么樣的?
(1)具有控制進程的功能。
(2)支持簡單的內置命令。
(3)不支持腳本語言功能,不支持管道和重定向操作。
與Python相關的學習要點
(1)Python os,sys模塊
實現過程中用了封裝了Linux系統調用的Python函數,比如:
目錄相關
os.getcwd()
os.chdir()
路徑相關
os.path.basename()
os.path.expanduser()
標准輸出文件描述符
sys.stdout.write
sys.stdout.flush()
獲取環境變量
os.getenv
(2)Python signal模塊
忽略信號
signal.signal(signal.SIGTSTP, signal.SIG_IGN)
(3)Python 字符串處理
shelx.split//分解參數
.startswith//判斷字符開頭
(4)subprocess
相當於系統調用fork,exec
總結
(1)本次實驗主要表現了Python在系統編程的能力,通過os,sys等模塊我們可以實現一個不錯的shell系統軟件。
(2)改進方向:添加管道,重定向操作,&后台調度操作等。
(3)對剛入門的同學要完全理解比較困難,需要去補充系統編程的知識。
(4)可以用面向對象,把shell抽象為類進行重構
---------------------
作者:yz764127031
來源:CSDN
原文:https://blog.csdn.net/yz764127031/article/details/71522161
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!