xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 5KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-18
  • 語言: 其他
  • 標簽: shell??

資源簡介

設計簡單的命令行myshell,并能在實驗環境下運行。 要求支持的命令如下: 1. cd [directory] 將當前目錄改為 [directory] 2. environ 列出所有環境變量 3. ls 列出指定目錄下所有文件 4. help 顯示所有支持的命令 5. echo 在屏幕上顯示參數并換行 6. quit 退出 shell 7. 支持I/O重定向 8. 常見的目錄和文件操作,比如新建目錄或文件,目錄或文件的刪除、復制,顯示文件內容等。 上述基礎功能滿分70分,完成下面各功能并在文檔中說明可得到加分,每項功能最多加10分: 1. 支持管道符操作 2. 不限制命令參數個數 3. 實現彩色輸出 4. 支持其它一些常見的linux命令 5. 自己認為比較重要或能體現自己水平的功能 如果是嘉大的,想要資源直接找我拿,就不用去買積分,1563602991

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?
#include?
//?保存當前的命令行輸入
char?line[256];

//?根據命令行輸入等到的命令參數
char?args[10][80];

//?命令參數個數
int?narg;
int?redir;???//判斷是否有重定向符號
char?*file;??//記錄重定向目標文件

//?將命令參數拷貝到當前命令中
void?copy_args(char*?cmd_args[])?{
????int?i=0;
????for?(i;?i?????????cmd_args[i]?=?args[i];
????}
????for(?i=0;?cmd_args[i]?!=?NULL;?i++?)
????{
????????if(?strcmp(?cmd_args[i]“>“?)?==?0?)??//命令中有輸出重定向
????????{
????????????redir?=?1;
????????}
?????}
???if(?redir?==?1?)???????????//命令只含有一個輸出重定向符號
?????{
????????for(?i=0;?cmd_args[i]?!=?NULL;?i++?)
????????{
????????????if(?strcmp(?cmd_args[i]“>“?)==0?)
????????????{
????????????????file?=?cmd_args[i+1];
????????????????cmd_args[i]?=?NULL;
????????????}
????????}
????}
}

//?執行?ls?命令
void?exec_ls()?{
????int?pid?=?fork();
????int?fd;
????if?(pid?>?0)?{
????????waitpid(pid?NULL?0);
????????return;
????}??
????char*?cmd_args[10]?=?{};
????copy_args(cmd_args);
????if(redir?==?1){ //如果命令有重定向
????????fd?=?open(?fileO_RDWR?|?O_CREAT?|?O_TRUNC?0644?);
????????dup2(?fd1?);????//指定新文件描述符為11為標準輸出,0為標準輸入
????}
????execv(“/bin/ls“?cmd_args);
}

//?執行?pwd?命令
void?exec_pwd()?{
????char?buffer[256];
????getwd(buffer);
????printf(“%s\n“?buffer);
}

//?執行?cd?命令
void?exec_cd()?{
????if?(narg?!=?2)?return;
????chdir(args[1]);?
????exec_pwd();
}
//執行environ?命令
void?exec_env(){
?execlp(“env“““NULL);
}
//echo?在屏幕上顯示參數并換行
void?exec_echo(){
char?array[999];
int?s=?strlen(line);
for(int?i=5;i {
???array[i-5]=line[i];

}
printf(“%s\n“array);
}
//執行help
void?exec_help(){
?int?pid?=?fork();
????if?(pid?>?0)?{
????????waitpid(pid?NULL?0);
????????return;
????}??
?system(“help“);
}
//創建文件
void?exec_vi()?{??
??int?pid?=?fork();????
??if?(pid?>?0)?{???????
????waitpid(pid?NULL?0);???????
????return;
????}???
??char*?cmd_args[10]?=?{};????
??copy_args(cmd_args);????
??execvp(“vi“?cmd_args);??

}

//創建文件夾
void?exec_mkdir()?{??
??int?pid?=?fork();????
??if?(pid?>?0)?{???????
????waitpid(pid?NULL?0);???????
????return;
????}???
??char*?cmd_args[10]?=?{};????
??copy_args(cmd_args);????
??execvp(“mkdir“?cmd_args);??

}
//刪除文件夾和文件夾
void?exec_rm()
{
???int?pid?=?fork();????
???if?

評論

共有 條評論