#include#include#include#include#include#include#include#include#includeusing namespace std;
const int shellnum =32;
const char * file_all = ;
const char * file_half = ;
//把輸入轉換為exec函式組可用的引數
void cmd2ar**(char **, char *);
//沒有 | 的情況
void cmd_no_grep(char **, char *);
//需要管道的情況
void cmd_with_grep(char **, char *, int );
//用來完成管道
bool filereverse();
//輸出到螢幕
void file2srcn();
int main()
}void cmd2ar**(char **ar**, char *cmd)
{ int cnt=0,bg=0,end=0;
while(cmd[bg] != '\0')
{//去除命令前面的空格
while(cmd[bg] == ' ')
bg++;
end = bg;
//確定命令的結尾
while(cmd[end] != ' ' && cmd[end] != '\0')
end++;
/*下面這個判斷時因為下面這種情況我這段**會有bug
ls -l (l後面還有兩個空格)
這是程式會成功拆開ls和-l 但是此時由於-l後面不是\0
所以while迴圈還會繼續,但是這種情況最後 bg == end
所以用下面這個判斷進行避免
*/if(bg != end)
{ar**[cnt] = new char[end-bg+1];
strncpy(ar**[cnt], cmd+bg, end-bg);
//cout<<":"《目前支援shell解析以及管道,但是重定向這種還沒實現
實現簡單的shell
shell就是運用程式替換的原理進行實現的。何為程式替換?假如作業系統正在執行某乙個程式,然後我們利用程式替換函式指定乙個新的程式,讓作業系統去執行我們新指定的程式。也就是這樣一種情形下,我們fork乙個程序,如果fork成功,子程序會和父程序執行相同的 而我們建立子程序是希望子程序執行指定的操作,...
Linux下實現簡單的shell直譯器
shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接受使用者輸入的命令並把它送入核心去執行。實際上shell就是乙個命令直譯器,它解釋有使用者輸入的命令並且把它們送到核心。不僅如此,shell有自己的程式語言用於對命令的編輯,它允許使用者編寫由shell命令組成的程式。she...
linux下自行實現的簡單shell程式
學過exec系列函式後,我嘗試自行實現乙個shell程式,先上 include include include include include include include include define num 32 using namespace std int main for pid t i...