Chinaunix首页 | 论坛 | 博客
  • 博客访问: 804541
  • 博文数量: 117
  • 博客积分: 2583
  • 博客等级: 少校
  • 技术积分: 1953
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-06 22:58
个人简介

Coder

文章分类
文章存档

2013年(1)

2012年(10)

2011年(12)

2010年(77)

2009年(13)

2008年(4)

分类: C/C++

2009-10-22 21:36:33

先说一下这个shell的设计的基本思想。不提供程序设计功能,指示提供一个简单的用户接口以使用操作系统。首先,判断启动shell时的参数,如果有参数的话,则可能需要进行输入输出的重定向,要从文件中一行行的读入命令行,或者将输入送入一个文件中。其他的参数报错。然后进入一个主大循环,获得命令行,之后用一个函数来解析命令行。将命令行看成是由空字符(一个或多个)分隔的几个域组成的,因为参数需要多个模块共同访问,所以解析的结果将存入一个全局的而为字符数组数组中,每一个域占用一行。然后检测第一个域的内容,根据第一个域来执行相应的内部命令或者外部命令。每一个内部命令用一个模块,一组函数来实现。
首先遇到的自然是输出提示符的问题,我们现在用的经典的bash shell基是根据PS1环境变量的值,来输出相应的字符串。默认的提示符格式是:[username@hostname dirname]$
我们的shell也就暂时不提供PS1这么强大的功能了,而直接使用bash的默认提示符就好了。

1、在实际编写的过程中,遇到的第一个问题就是fgets的行为问题
fgets是标准C lib里边的一个获得行输入的函数
fgets的函数原型为:
char *fgets(char *restrict buf, int n, FILE *restrict fp);
返回值:若成功则返回buf,若已到达文件尾或出错则返回NULL
第一个参数buf是输入数据所要保存到的缓冲区,第二个参数是缓冲区长度,第三个参数是获得数据输入的文件流。
它竟然会在每获得的一行的末尾保存一个换行符,真的是让人小困惑了一会儿。
阅读(1840) | 评论(1) | 转发(0) |
0

上一篇:myshell编写心得(0)

下一篇:binutils工具

给主人留下些什么吧!~~

chinaunix网友2009-12-30 15:13:40

楼主,我也在做这个题目,可否咨询几个问题?如果可以帮助我的话加一下我的506505804q。