程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 一起talk C栗子吧(第七十一回:C語言實例--DIY shell)

一起talk C栗子吧(第七十一回:C語言實例--DIY shell)

編輯:關於C語言

一起talk C栗子吧(第七十一回:C語言實例--DIY shell)



各位看官們,大家好,上一回中咱們說的是字符串初始化的例子,這一回咱們說的例子是:DIY shell。閒話休提,言歸正轉。讓我們一起talk C栗子吧!

看官們,我們每天都在使用shell,而且似乎已經離不開它了。這是前輩們留給我們的好東東。今天我們介紹如何DIY一個shell,算是向前輩的致敬吧。

我們DIY的思路如下:

1.輸入一個類似$的字符,提示用戶向終端中輸入內容; 2.從終端中讀取用戶輸入的命令; 3.判斷用戶輸入的命令,並且執行相應的命令; 4.重復步驟1到3,直到用戶輸入exit命令時,結束程序,退出shell。

下面是我寫的shell程序的簡單框架,請大家參考:

int main(int argc, char *argv[])
{
    char buf[BUF_SIZE];
    int res = 1;
    int flag = 1;
    int index = 0;

    while(flag)    // do this untial input exit commond
    {
        printf("|->");
        if(NULL == fgets(buf,BUF_SIZE,stdin))   // get the input
            return 0;

        index = sizeof(input)/sizeof(input_type);
        while(index-- > 0)
        {
            res = strncmp(buf,input[index].str,input[index].size); // find the commond
            if(res == 0)
            {
                switch(index)
                {
                case 0: // exec exit commond
                    flag = 0;
                    break;
                case 1: // exec cd commond
                    cds(buf);
                    break;
                case 2: // exec ls commond
                    lss(buf);
                    break;
                default:
                    printf("can 's \n");
                    break;
                }

                index = -1; // if find the commond, stop finding
            }
        }

        if(index == -1)
            printf("can't find commond: %s ",buf);
    }

    return 0;
}

程序中的cd和ls函數還沒有完全實現。此外,這只是一個簡單的程序框架,很多shell的功能都沒有實現。這些內容,我們會在後面的章節中介紹並且實現。

看官們,正文中就不寫代碼了,詳細的代碼放到了我的資源中,大家可以點擊這裡下載使用。下面是程序的運行結果,請大家參考。在程序中我們使用了“|->”代碼shell中的$,雖然形式不同,但是目的都是為了提示用戶輸入命令。

 |->abc                      //abc is not a commond
can't find commond: abc
 |->cd                       // exec the cd commond
cd running 
|->ls                        // exec the cd commond
ls running 
|->exit                      // exit the shell program

各位看官,關於DIY shell的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved