sh2.c: 實現shell程式,要求在第1版的基礎上,新增如下功能
• 實現檔案重定向
• $ echo hello >log
• $ cat log
• hello
實現思路:
和sh1.c
相比,主要是修改了cmd
函式的實現過程。通過迴圈找出重定向符號">"
的位置,記錄下來,並記錄下重定向符號後面的檔名,open
該檔案,然後建立乙個子程序,在子程序中,使用dup2()
函式將本來要輸出到螢幕的資料,重定向到我們剛開啟的檔案中,然後使用execvp()
函式裝載外部命令。
**:
#include
#include
#include
#include
#include
#include
#include
#include
#define max_path_len 200
#define cmd_len 200
int cmd_num;
char *cmd_array[100];
void cmd()
break;
}pid=fork();
if(pid==0)
}wait(null);
}void print_user()
void get_cmd()
cmd_array[i]=null;
cmd_num=i;
}void mycd()
}else
}}void myexit()
void mypwd()
else
}int main()
return
0;}
作業系統上機作業 使用系統呼叫實現mycat
cat etc passwd root x 0 0 root root bin bash daemon x 1 1 daemon usr sbin usr sbin nologin bin x 2 2 bin bin usr sbin nologin mycat etc passwd root x ...
作業系統與shell
可以認為作業系統是由 一組軟體 來組成的 硬體系統 作業系統 kernel與 作業系統api 應用程式 作業系統核心功能 系統呼叫介面 程式管理 記憶體管理 檔案系統管理 裝置的驅動 硬體與驅動程式 作業系統通常會提供乙個開發介面給硬體開發商 bourne shell sh bourne again...
Linux作業系統作業
1,什麼是檔案系統 答 檔案系統是作業系統用於明確磁碟或分割槽上的檔案的方法和資料結構 即在磁碟上組織檔案的方法。也指用於儲存檔案的磁碟或分割槽,或檔案系統種類。因此,可以說 我有2個檔案系統 意思是他有2個分割槽,乙個存檔案,或他用 擴充套件檔案系統 意思是檔案系統的種類。第一句話是重點,檔案系統...