/*簡單的模擬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成功,子程序會和父程序執行相同的 而我們建立子程序是希望子程序執行指定的操作,...