两周的业余时间,写了个简单的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 ...
随机推荐
- day 66 Django基础之jQuery操作cookie
Django基础之jQuery操作cookie jquery之cookie操作 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery. ...
- threading线程例子 (27-08)
利用阻塞的时间空闲去执行另一个子线程 import threading from time import ctime, sleep def music(func): for i in range(2) ...
- Mysql优化系列之表设计规范和优化
一.范式 如果详细的讲范式,要写大大大篇文章来讲,这里假设大家知道一些基本的范式规则,我用简洁的语句和例子说明 第一范式:列不可再分,譬如地址字段,可以再细分为省市区门牌号等等(其实还是看需求怎么整) ...
- Python Fabric模块详解
Python Fabric模块详解 什么是Fabric? 简单介绍一下: Fabric是一个Python的库和命令行工具,用来提高基于SSH的应用部署和系统管理效率. 再具体点介绍一下,Fabri ...
- windows系统下jupyter notebook使用虚拟环境
目录 [亲测好使]windows系统下jupyter notebook使用虚拟环境 在虚拟环境中安装jupyter,并添加到jupyter kernel 参考 [未测试,但觉得比上面那方法好,因为上面 ...
- HYNB Round 8: 2016 ICPC Amritapuri Regionals
HYNB Round 8: 2016 ICPC Amritapuri Regionals A - Tim and BSTs 做法 经典的树 DP 问题. \(dp[u][i]\) 表示考虑以 u 为根 ...
- 解决jquery ajax在跨域访问post请求的时候,ie9以下无效(包括ie9)的问题
最近在做项目的时候遇到一个问题,就是跨域请求ajax的时候ie9以下的浏览器不可以访问,直接执行error里面的代码,但是也不报错,就上网查了查,发现了一个很好用的方法,在这里记录一下,也希望可以帮到 ...
- java_初始网络编程
/** * 网咯编程入门: * c/s结构:全称Client/Server结构,是指客户端和服务器结构.常见程序有qq.迅雷等如那件 * B/S结构:全称Browser/Server结构,是指浏览 ...
- java_static关键字
/** * static关键字:静态关键字 * 静态优先于非静态加载到内存中(静态优先于对进入到内存中) * 被static修饰的成员变量不能被序列化的,序列化的都是对象 * transient关键字 ...
- 设置Hadoop+Hbase集群pid文件存储位置
有时候,我们对运行几天或者几个月的hadoop或者hbase集群做停止操作,会发现,停止命令不管用了,为什么呢? 因为基于java开发的程序,想要停止程序,必须通过进程pid来确定,而hadoop和h ...