操作系统 实现简单shell程序 sh2.c

sh2.c: 实现shell程序,要求在第1版的基础上,添加如下功能• 实现文件重定向• $ echo hello >log• $ cat log• Hello这还有一点点小问题,输入要求:重定向输入在重定向输出前面实现思路1.输入一行字符串2.调用parse_command把字符串根据'>'、'<'和' '分割 分割后的字符串保存到struct command【】中3.根据input和output判断是否有文件的重定向- 如果没有,执行mys
摘要由CSDN通过智能技术生成

sh2.c: 实现shell程序,要求在第1版的基础上,添加如下功能

•   实现文件重定向
•   $ echo hello >log
•   $ cat log
•   Hello

这还有一点点小问题,输入要求:重定向输入在重定向输出前面
在sh3.c把这个缺陷完善了
两个程序的字符串切割函数思路不太一样

实现思路

1.输入一行字符串
2.调用parse_command把字符串根据'>''<'' '分割
    分割后的字符串保存到struct command【】中
3.根据input和output判断是否有文件的重定向
- 如果没有,执行mysys()
- 如果有,创建子进程
  - 先执行重定向redirect()
  - 再执行mysys()	
4.把结构体内容清空,进行下一次循环
if(Cmd->input[0] == '\0'  && Cmd->output[0] == '\0')
		mysys(Cmd);
else
{
   
	int pid= fork();
    if(pid == 0)
	{
   
         redirect(Cmd);
		 mysys(Cmd);
         exit(0);
     }
     wait(NULL);
}	

函数和结构体说明

结构体

#define MAX_LEN 100
#define MAX_ARGC 16

char buff[MAX_LEN];
struct command{
   
	int argc;
	char *argv[MAX_ARGC];
	char input[MAX_LEN];
	char output[MAX_LEN];
};

函数

void SkipSpace(char *str)

跳过空格,主要是通过输入里面的空格,好识别input和output文件

void SkipSpace(char *str)
{
   
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值