LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2933|回复: 15

老师布置了操作系统课程设计。编写一个shell 。小弟不懂怎么下手。哪位老大能否指教

[复制链接]
发表于 2006-4-17 11:02:32 | 显示全部楼层 |阅读模式
老师布置了操作系统课程设计。编写一个shell 。小弟不懂怎么下手。哪位老大能否指教指教小弟?万分感谢。以前一直没学过这个。都是抄同学的。现在要自己做了,有做不出来。就上来这里向各位请教了
具体要求如下
操作系统课程设计:UNIX SHELL的设计
Unix shell是unix的命令解释程序,用于让用户以一种友好的方式运行程序和执行命令。本课程设计要求学生在linux下写一个命令解释程序,实现Ksh最基本的功能。即:允许用户打入一个可执行的程序的名字以及其命令行参数,执行这个程序。同时实现一部分内部命令(比如cd,详见要实现的命令),以及输入输出重定向等功能。具体功能要求如下:
基本功能要求
1)利用C语言在Linux上设计一个简单的命令解释程序,完成如下功能:
dir <directory>  列目录
cd  <>改变当前目录
pwd   显示当前目录名
md  <directory> 创建一个目录
copy  <source> <target>复制文件和目录
find 在指定的目录及其子目录中查找特定的文件
more <file>一页一页地显示文件
date 显示当前日期
time显示当前时间
ren <old name> <new name>重命名一个文件或目录
del  <file or directory>删除一个文件和目录
exit  退出命令解释程序。
执行一个程序
2)命令解释程序的提示符为:@
3)命令解释程序把命令行解释为内部命令或外部命令(要执行的程序)。内部命令直接在命令解释程序中处理,外部命令的执行则由命令解释程序通过fork()创建一个子进程,然后在子进程中调用exec执行一个程序。
4)命令解释程序应能够支持输入输出重定向。
选作内容:
1)        命令解释程序支持后台运行程序。
2)        命令解释程序支持管道。
3)        命令解释程序不能被ctrl+c打断。
课程设计要求:
1)        命令解释程序的实现环境是linux,编程语言使用C语言。
2)        整个程序必须严格经过测试,完整所有基本功能。源程序应有较详尽的注释。
3)        程序编写应有良好的风格。
4)        程序编制中不得使用system()系统调用。
5)        整个系统的源代码应由多个文件组成,所有源程序文件及其makefile用tar命令打成一个包,放在指定的目录下。
6)        设计报告应包含如下内容:a)系统的总体设计和详细设计  b) 你的命令解释程序详细使用手册  c) 所有源程序清单  d) makefile
7)        设计提交的内容应包括:a)设计报告(打印版)  b)装有源程序、设计报告的光盘一张 c)所有源程序文件及其makefile放在指定的服务器的指定目录下。
8)        不得抄袭,一经发现即给予不及格。
评分标准:
1)        内部命令实现  30分
2)        外部命令的执行  10分
3)        输入输出重定向  20分
4)        设计报告  15分
5)        使用手册  10分
6)        注释及良好的程序设计风格  15分
7)        分数在75分以上者,视选作内容作得情况酌情加分。但分数在75分以下者选作内容不予考虑。
主要参考书目:UNIX环境高级编程
可能用到的系统调用:
open(),close(),read(),write(),creat()
dup()
fork()
execl(),execv(),execle(),execve(),execlp(),execvp()
wait(),waitpid()
chdir()
opendir(),readdir(),rewinddir(),closedir()
rmdir(),mkdir()
发表于 2006-4-19 09:02:08 | 显示全部楼层
不会~~
不过我想知道以上的条款如果一个人全部做到了,那这个人应该是个什么水平?希望知道的介绍介绍~小弟不太了解~~
回复 支持 反对

使用道具 举报

发表于 2006-4-19 09:09:53 | 显示全部楼层
抄一个bash给他。。。。。。
回复 支持 反对

使用道具 举报

发表于 2006-4-19 10:04:07 | 显示全部楼层
Post by 终极幻想
抄一个bash给他。。。。。。

斑竹,我想知道能完成那些东西的人应该是个什么水准的啊??
回复 支持 反对

使用道具 举报

发表于 2006-4-19 10:39:47 | 显示全部楼层
那是我是给楼主的回答。。:)。
回复 支持 反对

使用道具 举报

发表于 2006-4-19 10:42:45 | 显示全部楼层
了解系统调用就行了,man看看,参照参照bash, 有点基础的都可以作
回复 支持 反对

使用道具 举报

发表于 2006-4-19 17:57:15 | 显示全部楼层
Post by paopao1982
老师布置了操作系统课程设计。编写一个shell 。小弟不懂怎么下手。哪位老大能否指教指教小弟?万分感谢。以前一直没学过这个。都是抄同学的。现在要自己做了,有做不出来。就上来这里向各位请教了
rmdir(),mkdir()

浙江大学出的那套Linux内核情景分析的后边有一本叫做<<边学边干>>的书,其中有一个例子shell,你可以参看
回复 支持 反对

使用道具 举报

发表于 2006-4-19 19:33:04 | 显示全部楼层
怀疑你们老师用的是这本书,里面有要求的全部内容:
Understanding Unix/Linux Programming - A Guide to Theory and Practice
Unix/Linux 编程实践教程

你们老师有毛病, 这些都不是shell 的功能:
dir <directory> 列目录
cd <>改变当前目录
pwd 显示当前目录名
md <directory> 创建一个目录
copy <source> <target>复制文件和目录
find 在指定的目录及其子目录中查找特定的文件
more <file>一页一页地显示文件
date 显示当前日期
time显示当前时间
ren <old name> <new name>重命名一个文件或目录
del <file or directory>删除一个文件和目录
回复 支持 反对

使用道具 举报

发表于 2006-4-23 21:07:28 | 显示全部楼层
从终端读命令调用system()函数或者exec函数.应该不难
回复 支持 反对

使用道具 举报

发表于 2006-4-23 21:08:21 | 显示全部楼层
这个题目不难,你看看UNIX环境高级编程
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表