91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

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

資源簡(jiǎn)介

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

資源截圖

代碼片段和文件信息

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

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

//?命令參數(shù)個(gè)數(shù)
int?narg;
int?redir;???//判斷是否有重定向符號(hào)
char?*file;??//記錄重定向目標(biāo)文件

//?將命令參數(shù)拷貝到當(dāng)前命令中
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?)???????????//命令只含有一個(gè)輸出重定向符號(hào)
?????{
????????for(?i=0;?cmd_args[i]?!=?NULL;?i++?)
????????{
????????????if(?strcmp(?cmd_args[i]“>“?)==0?)
????????????{
????????????????file?=?cmd_args[i+1];
????????????????cmd_args[i]?=?NULL;
????????????}
????????}
????}
}

//?執(zhí)行?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為標(biāo)準(zhǔn)輸出,0為標(biāo)準(zhǔn)輸入
????}
????execv(“/bin/ls“?cmd_args);
}

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

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

}
printf(“%s\n“array);
}
//執(zhí)行help
void?exec_help(){
?int?pid?=?fork();
????if?(pid?>?0)?{
????????waitpid(pid?NULL?0);
????????return;
????}??
?system(“help“);
}
//創(chuàng)建文件
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);??

}

//創(chuàng)建文件夾
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?

評(píng)論

共有 條評(píng)論