linux下shell的简单实现

一、什么是shell?
我们知道shell是linux下的系统的用户界面,提供了用户与内核实现交互操作的一种接口。它接收用户输入的命令,并把收入到的命令交给内核去执行。也就是说:shell是一个命令解释器,shell还有自己的编程语言用于对命令的编辑,允许用户编写由shell命令组成的程序。
二、shell实现的原理
shell是内核和用户之间交流的一种工具,它是一种“外壳程序”。当我们启动linux程序之后,内核会为我们终端用户建立一个进程去执行shell解释器的命令,shell执行的过程如下:
1、读取用户键盘输入的命令,返回读取到的字符个数。
2、将读取到的命令按照空格分成多个字符串,放在指针数组argv[]中并在指针数组额最后加一个NULL。
3、shell去调用fork()或者vfork()去创建一个子进程,子进程去执行替换函数,进程替换函数用的是execvp()。
4、子进程根据命令名查找相关的文件,将其调入内存创建文本段,再以写时拷贝的方式来创建数据段、堆栈段。
5、子进程处理完成或者出现异常之后,通过exit()或者_exit()函数告诉父进程的执行结果。
6、调用wait()等待子进程完成,子进程完成之后对其实现回收。

三、模拟实现简单的shell
前面包含了两个三个函数,分别是用来获取登录名,主机名和当前的工作目录。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
运行结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值