看完了apue後,打算寫乙個簡單的shell練練手,於是就實現了乙個最最基本的shell,下面先看看到底shell是什麼?
shell,翻譯成中文就是殼的意思,在作業系統中就是指包裹著作業系統核心,用來和使用者進行互動的那個介面。如下圖中所示:
也就是說shell實際上是使用者和系統核心之間的一條紐帶,用於使用者和核心之間互動。比如說使用者希望改變某個檔案的許可權,在linux中需要使用chmod這個系統呼叫。然而身為乙個使用者你卻不知道如何呼叫這個命令。通過shell我們就可以完成這個任務,無論是什麼版本的linux,開啟終端後敲入chmod即可完成這個系統呼叫,而終端中的shell負責完成使用者態向核心態的切換和相關介面的呼叫。
首先我們肯定需要shell能夠執行linux提供的系統呼叫,然而這一塊兒非常easy的在於大部分的系統呼叫的可執行檔案都由作業系統自帶了,所以我們需要做的就是像很多書上寫的一樣,按下圖三步走就可以實現乙個最最最最基本的shell:
當然我們說了是為了鍛鍊在apue裡面學到的知識,所以只用fork,exec和wait這幾個程序控制呼叫是無法滿足我們的目的的,所以我們還需要實現的有:
我們知道在一般的linux的shell中,例如bash,其實這本身已經是一門指令碼語言了,但是由於本人並沒有編譯原理和語言直譯器方面的知識,所以我們的shell真的只是乙個簡單的殼而已,並沒有實現語法直譯器的功能。如果讀者有能力可以自己實現,不過有這份能力,估計也不用看這文章。。。。
Linux下C語言實現簡單Shell
include include include include include include include include define max string 256 define signin define signout define signpine const char expst ex...
Linux下實現簡單的shell直譯器
shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接受使用者輸入的命令並把它送入核心去執行。實際上shell就是乙個命令直譯器,它解釋有使用者輸入的命令並且把它們送到核心。不僅如此,shell有自己的程式語言用於對命令的編輯,它允許使用者編寫由shell命令組成的程式。she...
Linux環境下編寫簡單的Shell
使用程序建立 等待 終止等知識自主實現簡單的linuxshell命令列,linux環境 centos7.3 fork 函式有兩個返回值,它會給子程序返回0,給父程序返回子程序的pid,如果建立子程序失敗,則會返回 1。通過fork 建立的子程序與父程序會共享同乙份 因為 段的資料是唯讀的,不會發生寫...