(1)讀取用戶由鍵盤輸入的命令行。
(2)分析命令,以命令名作為文件名,并將其它參數(shù)改造為系統(tǒng)調(diào)用execve( )內(nèi)部處理所要求的形式。
(3)終端進程調(diào)用fork( )建立一個子進程。
(4)終端進程本身用系統(tǒng)調(diào)用wait4( )來等待子進程完成(如果是后臺命令,則不等待)。當(dāng)子進程運行時調(diào)用execve( ),子進程根據(jù)文件名(即命令名)到目錄中查找有關(guān)文件(這是命令解釋程序構(gòu)成的文件),將它調(diào)入內(nèi)存,執(zhí)行這個程序(解釋這條命令)。
(5)如果命令末尾有&號(后臺命令符號),則終端進程不用系統(tǒng)調(diào)用wait4( )等待,立即發(fā)提示符,讓用戶輸入下一個命令,轉(zhuǎn)⑴。如果命令末尾沒有&號,則終端進程要一直等待,當(dāng)子進程(即運行命令的進程)完成處理后終止,向父進程(終端進程)報告,此時終端進程醒來,在做必要的判別等工作后,終端進程發(fā)提示符,讓用戶輸入新的命令,重復(fù)上述處理過程。