linux c實現簡單shell

2021-06-05 14:41:10 字數 1139 閱讀 3668

/*簡單的模擬shell,可以執行帶乙個輸入重定向(或輸出重定向或管道)命令,程式存在不完善之處,基本能用*/

#include#include#include#include#include#include#include#include#includechar command[100]; /*存放命令*/

char argv[50][50]; /*存放分解後的命令*/

int count; /*命令分解後的個數*/

/*列舉型別,依次表示一般命令,帶輸出重定向命令,帶輸入重定向命令,帶管道命令*/

enum specify;

/*函式宣告*/

int analysis_command();

int do_command();

int find_command(char *command);

/*主函式*/

int main()

return 0;

}/*解析命令*/

int analysis_command()

else

s++;

break;

} }

count=i;

if(count==0)

return 0;

if(strcmp(argv[0],"logout")==0 || strcmp(argv[0],"exit")==0)

exit(0);

/*判斷命令是否存在*/

if(!find_command(argv[0]))

return 1;

}/*執行命令*/

int do_command()

for(i=0;i")==0)else if(strcmp(arg[i],"|")==0)

pid=fork();

if(pid<0)else if(pid==0)else

break;

}}else

return 1;

}/*查詢命令*/

int find_command(char *command)

closedir(d);

dir=strtok(null,":");

}return 0;

}

linux c簡單實現cp 命令

想通過c語言簡單實現cp 命令,基礎原理是 1.判斷輸入引數原始檔和目標是否為空 2.分別使用open 系統呼叫開啟原始檔,目標檔案不存在則建立目標檔案 3.用read 呼叫將原始檔內容讀到快取buf中,再呼叫write 函式把buf內容寫到目標檔案裡。注意 在驗證 現read 返回值一直是1,而不...

Linux C 常用shell指令碼

1.列出所有目錄使用量,並按大小排序。如下 ls xargs du h sort rn 不遞迴下級目錄使用du sh 2.檢視檔案排除以 開關和空白行,適合檢視配置檔案。如下 egrep v filename sed d d 3.刪除空格和空行。如下 sed d filename 刪除空行 sed ...

實現簡單的shell

shell就是運用程式替換的原理進行實現的。何為程式替換?假如作業系統正在執行某乙個程式,然後我們利用程式替換函式指定乙個新的程式,讓作業系統去執行我們新指定的程式。也就是這樣一種情形下,我們fork乙個程序,如果fork成功,子程序會和父程序執行相同的 而我們建立子程序是希望子程序執行指定的操作,...