• 大小: 421KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-21
  • 语言: C/C++
  • 标签:

资源简介

Linux操作系统中shell是用户与系统内核沟通的中介,它为用户使用操作系统的服务提供了一个命令行界面,用户在shell提示符下输入的每个命令都由shell先解释,然后传给内核执行。本实验要求用C语言编写一个简单的shell程序,希望达到如下目的: 1、 能够执行外部程序命令,命令可以带参数; 2、 能够执行fg、bg、cd、history、exit等内部命令; 3、 使用管道和输入输出重定向; 4、 支持前后台作业,提供作业控制功能,包括打印作业的清单,改变当前运行作业的前/后台状态,以及控制作业的挂起、中止与继续运行; 5、 使用Make工具建立工程; 6、 使用调试器gdb来调试程序;

资源截图

代码片段和文件信息

//=========================================================================
// 文件名: addBlank.c
//  功能描述:本文件完成在类似“cat>test““>>“作为标
//   志符号,给标志符号的前后加上空格
// 维护记录: 2009-4-12 v1.0 by sxz
//=========================================================================

#include“addBlank.h“

//=============================================================
// 语法格式: char *addBlank(char cmd[40])
// 实现功能: 本文件完成在类似“cat>test// “>“、“>>“作为标志符号,给标志符号的前后加上空格
// 参数: 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)  //先判断有没有“>>”因为“>“包含于“>>”,为其前后加上空格
{
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)(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个文件信息

评论

共有 条评论

相关资源