-
大小: 421KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-21
- 語言: C/C++
- 標(biāo)簽:
資源簡介
Linux操作系統(tǒng)中shell是用戶與系統(tǒng)內(nèi)核溝通的中介,它為用戶使用操作系統(tǒng)的服務(wù)提供了一個命令行界面,用戶在shell提示符下輸入的每個命令都由shell先解釋,然后傳給內(nèi)核執(zhí)行。本實(shí)驗(yàn)要求用C語言編寫一個簡單的shell程序,希望達(dá)到如下目的:
1、 能夠執(zhí)行外部程序命令,命令可以帶參數(shù);
2、 能夠執(zhí)行fg、bg、cd、history、exit等內(nèi)部命令;
3、 使用管道和輸入輸出重定向;
4、 支持前后臺作業(yè),提供作業(yè)控制功能,包括打印作業(yè)的清單,改變當(dāng)前運(yùn)行作業(yè)的前/后臺狀態(tài),以及控制作業(yè)的掛起、中止與繼續(xù)運(yùn)行;
5、 使用Make工具建立工程;
6、 使用調(diào)試器gdb來調(diào)試程序;

代碼片段和文件信息
//=========================================================================
// 文件名: addBlank.c
//??功能描述:本文件完成在類似“cat>test““>>“作為標(biāo)
//?? 志符號,給標(biāo)志符號的前后加上空格
// 維護(hù)記錄: 2009-4-12?v1.0 by?sxz
//=========================================================================
#include“addBlank.h“
//=============================================================
//?語法格式: char?*addBlank(char?cmd[40])
//?實(shí)現(xiàn)功能: 本文件完成在類似“cat>test // “>“、“>>“作為標(biāo)志符號,給標(biāo)志符號的前后加上空格
//?參數(shù): cmd[40]:?從鍵盤鍵入的命令行(全局變量)
//?返回值: 添加好空格后的命令行的首地址
//=============================================================
char?*addBlank(char?cmd[40])
{
char?buf[40];
char?temp[40];
char?temp1[40];
char?*p;
int?t=0;
int?j=0i=0;
strcpy(bufcmd);
if((p=strstr(buf“>>“))?!=?NULL)? //先判斷有沒有“>>”因?yàn)椤?“包含于“>>”,為其前后加上空格
{
t=(p-buf)/sizeof(char); //找到“>>“在命令數(shù)組中的下標(biāo)號
for(i=0;i {
strcpy((temp+i)(buf+i));
}
strcpy((temp+t)“?“);
strcpy((temp+t+1)(buf+t));
strcpy((temp+t+2)(buf+t+1));
strcpy((temp+t+3)“?“);
for(i=t+4j=t+2;j {
strcpy((temp+i)(buf+j));
}
if((p=strstr(temp“<“))?!=?NULL) //再判斷命令行中是不是同時有“<”有則給其前后加上空格
{
t=(p-temp)/sizeof(char);
for(i=0;i {
strcpy((temp1+i)(temp+i));
}
strcpy((temp1+t)“?“);
strcpy((temp1+t+1)(temp+t));
strcpy((temp1+t+2)“?“);
for(i=t+3j=t+1;j {
strcpy((temp1+i)(temp+j));
}
strcpy(cmdtemp1);
}
else
{
strcpy(cmdtemp);
}
}
else?if((p?=?strstr(buf“>“))?!=?NULL)
{
t=(p-buf)/sizeof(char);
for(i=0;i {
strcpy((temp+i)(buf+i));
}
strcpy((temp+t)“?“);
strcpy((temp+t+1)(buf+t));
strcpy((temp+t+2)“?“);
for(i=t+3j=t+1;j {
strcpy((temp+i)(buf+j));
}
if((p=strstr(temp“<“))?!=?NULL)
{
t=(p-temp)/sizeof(char);
for(i=0;i {
strcpy((temp1+i)(temp+i));
}
strcpy((temp1+t)“?“);
strcpy((temp1+t+1)(temp+t));
strcpy((temp1+t+2)“?“);
for(i=t+3j=t+1;j {
strcpy((temp1+i)(temp+j));
}
strcpy(cmdtemp1);
}
else
{
strcpy(cmdtemp);
}
}
else
{
;
}
return?cmd;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????957??2009-12-06?10:00??shell\shell命令解釋器測試說明.txt
?????文件???????2498??2009-12-06?10:11??shell\code\addBlank.c
?????文件????????139??2009-04-12?17:14??shell\code\addBlank.h
?????文件???????1197??2009-04-12?17:45??shell\code\check.c
?????文件????????173??2009-04-12?17:36??shell\code\check.h
?????文件???????1526??2009-04-12?17:49??shell\code\history.c
?????文件????????121??2009-04-12?17:46??shell\code\history.h
?????文件???????1598??2009-12-06?09:52??shell\code\init_environ.c
?????文件????????195??2009-04-12?17:50??shell\code\init_environ.h
?????文件???????1104??2009-04-12?18:02??shell\code\isincmd.c
?????文件????????176??2009-04-12?17:58??shell\code\isincmd.h
?????文件???????1371??2009-04-12?18:08??shell\code\keypress.c
?????文件????????165??2009-04-12?17:07??shell\code\keypress.h
?????文件???????4885??2009-04-13?09:06??shell\code\main.c.bak
?????文件????????245??2009-04-12?17:07??shell\code\Makefile
?????文件????????663??2009-04-12?18:18??shell\code\myinclude.h
?????文件???????3744??2009-04-12?18:35??shell\code\myjobs.c
?????文件????????342??2009-04-12?18:19??shell\code\myjobs.h
?????文件?????????39??2009-04-12?17:07??shell\code\mysh_profile
?????文件????????866??2009-04-12?18:12??shell\code\my_pipe.c
?????文件????????177??2009-04-12?18:12??shell\code\my_pipe.h
?????文件????????904??2009-12-06?16:31??shell\code\my_strstr.c
?????文件????????153??2009-04-12?18:13??shell\code\my_strstr.h
?????文件???????2519??2009-04-12?18:41??shell\code\redirect.c
?????文件????????282??2009-04-12?18:36??shell\code\redirect.h
?????文件????????834??2009-04-12?18:44??shell\code\save_cmd.c
?????文件????????138??2009-04-12?18:42??shell\code\save_cmd.h
?????文件??????11639??2009-04-12?17:07??shell\code\test
?????文件????????354??2009-04-12?18:46??shell\code\test.c
?????文件????????427??2009-04-12?17:07??shell\code\test1
............此處省略50個文件信息
- 上一篇:C語言讀取BMP文件
- 下一篇:中序遍歷二叉排序樹
評論
共有 條評論