zoukankan      html  css  js  c++  java
  • c语言编写shell程序myshell

    前一段时间,一个同学的朋友找到我,让我帮他完成一项作业。

    作业的内容大体是制作一款简易的shell程序,程序的框架由命题人已经搭好,需要在现有的框架下完成一系列的命令,例如ls、cd、exit、time等等。

    题目要求点击我

    写好的程序代码点击我

    源码文件分析如下:

    myshell.c :主程序,接受参数,输出信息。

    myshell.h:头文件定义引用

    globals.c:对命令进行分类

    parser.c:对命令进行解析,用了487行代码

    execute.c:具体执行命令,我的主要是修改了这个文件,大概增加了200行代码

    Makefile:编译程序

    主要修改了execute.c,用于添加命令函数和执行命令。
    还有myshell.h用于添加头文件和声明函数。

    使用方法:
    在目录下输入make,编译成myshell可执行程序。
    然后./myshell进入命令行,即可执行shell名。
    例如ls,cd /opt,time,/usr/bin/cal -y等

    完成的功能有:
    step0
    建立了Makefile文件,使用make命令即可编译成myshell程序。

    step1
    执行外部命令,如/bin/ls或/usr/bin/cal -y

    setp3
    执行内部命令,也就是自己定义的命令
    1. exit 退出命令
    2. cd 切换目录,cd为切换到默认目录或者cd /opt 切换到指定目录。
    3. time 执行时间命令
    4. ls 列出目录ls ,ls /opt

    step4
    支持顺序执行;
    支持与执行&&
    支持或执行||

    step6
    支持文件输出重定向
    ls > a.txt 重新写
    ls >> a.txt 追加写

    step9
    后台执行函数
    ls; /bin/ps & time
    time将会后台执行

    题目的目的主要考察c语言的基本功,以及linux函数的使用。

    由于水平有限,题目的要求里有很多没法完成,如果小伙伴们有兴趣的话可以进一步完善哦。

  • 相关阅读:
    C字符串格式化
    oms登录bug
    宏旺文章审核功能使用指引
    phpcms文章审核
    html5的pushState 无刷新, 前进后退等
    js路由—backbone的路由的实现02
    js路由—backbone的路由的实现01
    js路由—简单路由的实现
    img标签和css的background-image的区别
    querySelector与querySelectorAll
  • 原文地址:https://www.cnblogs.com/aijingyi/p/7891433.html
Copyright © 2011-2022 走看看