支持重定向功能的shell小程序

2017-05-17 08:36 阅读 642 次 评论 0 条

本次编写的shell小程序测试环境为Centos6.5 。支持诸如ls、pwd、mkdir、touch、echo、ifconfig等内置命令,当然最大的亮点在于支持重定向(仅实现了输出重定向),不支持管道(后续补上)。

外壳程序shell

Shell之所以叫做外壳程序是因为它不属于Linux的内核部分,他处于系统调用层之上,其最主要的两个功能为:

①指令传递:将使用者的命令翻译给核心区处理,再将核心的处理结果翻译给使用者。

②软件层面的保护。

当然在我们UNIX或者Linux操作系统上,shell是对命令解释器的一个统称,严格意义上bash才是真正的命令行解释器。

shell用fork创建新进程时,用execv函数簇在新进程中运行用户指定的程序,最后shell用wait命令等待子进程的结束,wait系统调用同时从内核取得退出状态或者信号序号以告知父进程子进程是如何结束的。

获取用户名

使用getuid函数来获取用户名,getuid的函数原型为:

getpwuid函数是通过用户的uid查找用户的passwd数据。如果出错时,它们都返回一个空指针并设置errno的值,用户可以根据perror函数查看出错的信息,其定义如下:

获取用户名代码:

获取主机名

使用gethostname函数,其函数原型为:

name:保存获取到的信息。len:表示期望获取的字符个数。

获取主机名代码:

获取当前路径

使用getcwd来获取当前路径,其函数原型如下:

获取当前路径代码:

Makefile及myshell.c(完整)

测试用例

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:支持重定向功能的shell小程序 | 术与道的分享
分类:操作系统 标签:, ,
1024do.com导航_术与道导航平台

发表评论


表情