unix shell(壳)的简单实现
生活随笔
收集整理的這篇文章主要介紹了
unix shell(壳)的简单实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用戶程序通過調用操作系統提供的系統調用(system call)API 來獲得操作系統提供的各種服務。但使用 API 需要手動編寫程序。對于不編程序、且需要與操作系統進行交互的用戶,又如何使用操作系統的服務呢?
為了向那些不編程的用戶提供服務,操作系統提供了一個殼(shell)來與用戶交互。 每個操作系統都會提供某種殼以便與用戶進行交互。正如蛋殼(eggshell)之于內部的蛋清(egg white)和蛋黃(egg yolk),操作系統提供的殼(“os shell”)是覆蓋在操作系統服務上面的一個用戶界面(user interface),一般分為如下兩種形式:
- 既可以是圖形方式的(GUI, Graphical User Interface):Windows
- windows 中,啟動殼需要執行 explore.exe,也即 windows 的資源管理器;
- 也可以是文本形式的:UNIX,Linux;
- 啟動一個殼,只需要運行 shell 即可,可以同時啟動多個殼;
用戶在這個界面上輸入命令,操作系統則執行這些命令。當然,用戶輸入的命令不是直接的操作系統服務,而是所謂的 utilities(工具)。這里 utilities 的功能相當于 C 語言中的庫函數。用戶無法直接調用系統調用。殼上的用戶不能直接使用操作系統提供的服務。
1. 一個殼的具體功能
- 顯示提示符(prompt)
- 接受用戶命令并執行;
- 啟動后臺進程;
- 進行工作控制;
- 提供薇偽終端服務;
2. 一個簡單的殼實現
while (true) {type_prompt(); // 顯示命令提示符;read_command(command, parameters); // 獲取用戶輸入的命令,及參數if (fork() == 0) { // fork 一個子進程;execute(command, parameters, 0); // 子進程代碼,執行用戶命令} else { // 父進程代碼段waitpid(-1, &status, 0); // 等待子進程結束;} }轉載于:https://www.cnblogs.com/mtcnn/p/9422055.html
總結
以上是生活随笔為你收集整理的unix shell(壳)的简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 31 Next Per
- 下一篇: JZOJ 3.10 1540——岛屿