一、什么是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
前面包含了两个三个函数,分别是用来获取登录名,主机名和当前的工作目录。
运行结果:
linux下shell的简单实现
最新推荐文章于 2024-08-17 17:10:39 发布