Categories
學習筆記

寫屬於自己的shell 并解決zombie問題

上次作業系統概論的老師給了我們一個作業 讓我們寫一個簡單的shell 首先第一個問題:shell是什麼? wikipedia的解答: In computing, a shell is a user interface for access to an operating system’s services.In general, operating system shells use either a command-line interface (CLI) or graphical user interface (GUI), depending on a computer’s role and particular operation. 其實所謂的shell就是一個使用者跟系統服務溝通的橋樑,它可以是命令行界面(CLI)的,也可以是圖形化界面(GUI)的。 而老師要我們寫的shell,基本上就是一個command-line interface的東西,而實作環境是在linux底下。 而shell在接到我們下的command后,到底實際上是怎麼做的呢? 先fork,然後exec。 這時候問題又來了。 什麼是fork? fork是一個把自己複製一份的過程,複製者叫parent,被複製出來的就是child。 那為什麼要fork? 試想想,如果今天你想要某個東西在後臺執行,而你可以繼續做別的事,是不是需要兩個process同時運行? 接下來,我們就可以開始說怎麼寫shell了。 先做好構思。 (1) […]

Categories
學習筆記

Shell Script 基礎篇(一)

以下關於shell script的一切都以sh為標準 🙂 1)man — display online manual documentation pages 在unix-like系統里 有個叫man的傢伙 它會知道關於程序怎麼用 所以不知道怎麼用的時候可以問問它 詢問方法:man 程序 例子:man ls 可見結果如下:(//為我寫的注解) NAME //程序名稱+大致用途 ls — list directory contents SYNOPSIS //概要:各種用法 option+arguement //[]為可選 <>為數字範圍 無括弧的則是必須的 //以ls為例 前面的 [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwx1] 裏面的任何一個option都是可以合在一起用的,就如“ls -al”和“ls -a -l”都是可行的 //所謂arguement就是跟在option之後的其他選項,如ls -D %D的“%D”就是arguement ls [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwx1] [-D format] [file …] DESCRIPTION //各種描述 包括各個option的用途等 …………….(這裡有很多東西)……………. -A Include directory […]