实现了一个简单的 shell: tinyshell

2019-07-21 12:21:37 +08:00
 wuhuaji

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

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

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

发到这里,主要是想:

2659 次点击
所在节点    分享创造
9 条回复
LiuJiang
2019-07-21 21:06:30 +08:00
动不动就求 star,想多了。
SpiderXiantang
2019-07-21 21:38:24 +08:00
我现在感觉写轮子就得写点有使用价值的
SpiderXiantang
2019-07-21 21:56:17 +08:00
看到楼主的 github 就看到了自己的 github 加油 已经点赞了
shuizhengqi
2019-07-22 09:49:29 +08:00
bultin 是指 built in 吗?
wuhuaji
2019-07-22 09:52:25 +08:00
@shuizhengqi 是的,笔误了,指的是 cd 等由 shell 自己实现的命令
linyinma
2019-07-24 09:34:05 +08:00
想玩玩 CLI 建议看看《 unix 环境高级编程》--- 伪终端

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

管道 Vs 终端 主要是缓冲和阻塞的问题~~
wuhuaji
2019-07-24 14:36:44 +08:00
@linyinma 我这里也是考虑在 shell 中的进程都有血缘关系,用无名管道即可。

你说的缓冲和阻塞问题,似乎我还没什么体会,能否举例说下什么情况下会碰到呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/584826

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX