两周的业余时间,写了个简单的shell

实现了基本的内部命令功能,及比较完善的内部命令框架。

类似于MFC消息映射表的方式,写完一个内部命令,只需要向这个头文件中,导入一个头文件,再写入命令处理函数,就可以把一个内部命令插入到内部命令表中 。好歹我也是看过猴姐书的人。。。。
我的程序现在的缺点就是,不能执行终端的管道操作和重定向操作。
管道操作和重定向操作其实很简单。但是问题在于,管道操作是可以无上限的
比如: ls | grep e | grep s | grep . | grep i | grep c
只要我想,就可以无限地写下去,管道操作可以无上限,这样问题就来了。。如果是个输出管道,好办。但是输入管道怎么办。
我这里测试的问题就是,输入管道,如果我在外面写入的话,外部命令的管道接收端不会搭理我,不知道为什么,不管我怎么写,它都不搭理我,不收我写的东西。。当然了,我确定对方命令已经在监听我的管道了,但是它就是不收我的东西。。。郁闷。。。
还有个问题就是,Linux不同于Windows,父进程一定要后于子进程结束,不然的话,子进程就变成孤儿了。会有大问题。
也就是说,父进程必须后结束,而且父进程也必须是接收端,这样。。。再回头看前面那条指令,比较麻烦了。。。
由于管道操作麻烦,所以我干脆就没写,重定向操作类似,因为 > 等等操作也是可以无上限的。。。麻烦
其他方面,没什么大问题了,包括 shell 脚本解释,来回的程序启动,都没大问题。。
我自己写的东西,记录一下,业余两周时间,才写了这么点东西,不到1200行有效代码。
不过我感觉,这个东西应该是我考虑得最周全的了。。。
从上到下的框架设计,模块拆分,功能复用,功能添加,基本上大部分需要添加的,只要导入一个头文件,插入一个宏就好了
明天交货了。先这样吧。。。
两周的业余时间,写了个简单的shell的更多相关文章
- 给力!斩获 GitHub 14000 Star,两周创办开源公司获数百万美元融资
文章来源|AI科技大本营 作者|伍杏玲 上世纪 90 年代初,21 岁大学生 Linus Torvalds 开源 Linux 操作系统,自此掀起全球开源浪潮.随后"中国 Linux 第一人& ...
- 两周撸一个掘金微信小程序
利益相关 无 声明 这并不是掘金官方小程序(貌似没有搜到掘金 APP 对应的官方小程序),完全为第三者开发者开发,仅用于学习交流,禁止用于其他用途.若要使用官方正版,可访问掘金 官方网站,或下载掘金官 ...
- 两周多学完Java 23种设计模式
最近两周任务不是很繁重,对于一个刚入职4个月的菜鸟来说,学习设计模式并灵活使用简直天方夜谭:但是当我询问我导师需要学点啥的时候?“<Java设计模式>,这个必须要学”,一句简单粗略的 ...
- 一个java实习生两周八次的面试经历
以前从来没有因为求职出去面试过,一直觉得面试很可怕,没想到最近两周我也成为了面霸,两周面试八次,我的找工作之路就这样开始了!大概两个星期之前,我看着自己在招聘网站上写好的简历连投出去的勇气都没有,战战 ...
- 来TN公司两周的记录
刚好上两周班,现在记录一下吧. 第一周:全部是培训,关于系统的架构.BOSS.NGBOSS.编码规范.开发规范.项目文档等.听了之后对公司的技术还是有一定的了解.至少知道公司不只一个web站. 第二周 ...
- Servlet课程0426(十一)Servlet Cookie实现两周内不用重复登录
Welcome.java //登录界面 package com.tsinghua; import javax.servlet.http.*; import java.io.*; import java ...
- JavaWeb 08_JSP+Dao+Bean+Servlet 实现登录注册(连接数据库,验证码登录,两周内免登陆等功能)
一.数据库db_01 表usert 字段username,password 二. 目录 三. 配置信息 四. 代码 index.jsp <script type="text/j ...
- 材价看板(2)- 运行两周的kanban,改进的起点
改进从何谈起?必须找到起点,那起点从哪来? 看板不需要像Scrum那样改变以往工作角色,简单通过任务上墙,配合敏捷的设计就能通过显示化日常工作来让问题自己蹦出来.在任何一个新采用看板的研发团队,执行一 ...
- 两周“学会”bootstrap搭建一个移动站点
一直想着用bootstrap搭建网站,它的自适应.元素封装完善.现成的Glyphicons字体图标,省去很多的css.js.ui的工作,可以快速搭建一个客户需要的站点.ytkah自己有一些div+cs ...
随机推荐
- PHP面向对象魔术方法之__clone函数
l 基本介绍 : 当我们需要将一个对象完全的赋值一份, 保证两个对象的属性和属性值一样,但是他们的数据库空间独立,则可以使用对象克隆. <?php header('content-type:te ...
- Ubuntu Error: No module named 'apt_pkg' 怎么办?
版权声明:任何博客都可以转载,但必须标注来源 https://blog.csdn.net/nikoong/article/details/79612615 ubuntu经常用要添加PPA源,就是使用如 ...
- java中一个类不想被继承怎么办?
方法一:把类声明为final 方法二:对类中的构造器声明为private,类中提供一个static方法,完成对类的初始化.如下代码: public class Base{ private Base() ...
- 03_mybatis配置文件详解
1. SqlMapConfig.xml mybatis全局配置文件SqlMapConfig.xml,配置内容如下: *properties(属性) setting(全局配置参数) typeAliase ...
- 2019 CCPC 湖南全国邀请赛
A. Chessboard 做法1 单纯形. 做法2 最大费用可行流问题,行列模型. 对每行建一个点,每列建一个点.物品 \(i\) 在 \((r,c)\),那么 \(r\) 向 \(c\) 连流量为 ...
- Win10系统无法安装可选功能提示错误代码0x800F081F的解决方法
DISM /Online /Cleanup-Image /RestoreHealth /Source:wim:H:\sources\install.wim:1 /limitaccess
- css 图片波浪效果
参考:https://blog.csdn.net/zhichaosong/article/details/80944924#_99 效果: wave2.png html: <!DOCTYPE h ...
- Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下
在Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下常用的命令,需要的朋友参考下吧(http://www.hnkjlb.com) linux系统为Ubuntu 一. ...
- Java写爬虫代码时报org.apache.http.client.ClientProtocolException: URI does not specify a valid host异常的处理
异常原因是url写错,导致无法解析 比如:这个报错就是因为写了两个“http:”导致该无法解析
- 莫烦pytorch学习笔记(七)——Optimizer优化器
各种优化器的比较 莫烦的对各种优化通俗理解的视频 import torch import torch.utils.data as Data import torch.nn.functional as ...