首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
V2EX  ›  分享创造

实现了一个简单的 shell: tinyshell

  •  
  •   wuhuaji · 30 天前 · 1271 次点击

    截图

    最近三周业余时间实现了一个简单 shell。除了读取一个命令并执行外,还实现管道,重定向等 io 特性,history,cd等 bultin 命令。

    代码地址:https://github.com/WuHuaJi0/tinyshell

    总的来说还比较简陋,还有不少尚待实现的 feature。

    发到这里,主要是想:

    • 希望能获得一些建议,或者批评都欢迎,大家一起讨论一下。
    • 估计会对新手有些帮助。练习 Linux 系统或者练习 C 语言,实现一个 shell 是一个不错的想法,大佬们可能看不上,对新手估计能有些参考。
    • 嘿,求 star:)
    9 回复  |  直到 2019-07-24 14:36:44 +08:00
        1
    LiuJiang   29 天前
    动不动就求 star,想多了。
        2
    SpiderXiantang   29 天前
    我现在感觉写轮子就得写点有使用价值的
        3
    SpiderXiantang   29 天前
    看到楼主的 github 就看到了自己的 github 加油 已经点赞了
        4
    shuizhengqi   29 天前
    bultin 是指 built in 吗?
        5
    wuhuaji   29 天前
    @shuizhengqi 是的,笔误了,指的是 cd 等由 shell 自己实现的命令
        6
    linyinma   27 天前
    想玩玩 CLI 建议看看《 unix 环境高级编程》--- 伪终端

    采用无名管道,只能呵呵~~
        7
    wuhuaji   27 天前
    @linyinma 伪终端相关章节我还没深看,就无名管道想请问下,和有名管道在这里实现会有什么优劣么?
        8
    linyinma   27 天前
    @wuhuaji 有名 /无名管道 区别在于使用场景吧,无名在于血缘关系的父子进程间通信,有名管道没有限制只要名字约定好,规定谁读谁写就可以了~~

    管道 Vs 终端 主要是缓冲和阻塞的问题~~
        9
    wuhuaji   26 天前
    @linyinma 我这里也是考虑在 shell 中的进程都有血缘关系,用无名管道即可。

    你说的缓冲和阻塞问题,似乎我还没什么体会,能否举例说下什么情况下会碰到呢?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3234 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 05:08 · PVG 13:08 · LAX 22:08 · JFK 01:08
    ♥ Do have faith in what you're doing.