操作系统课程设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统课程设计实验报告
专业班级
计算机科学与技术
学生姓名及学号
课程教学班号
0001班
任课教师
实验指导教师
实验地点
2009 ~2010 学年第二学期
计算机与信息学院
(一)课程设计任务、要求、目的:
操作系统接口:兼容Unix/Linux命令接口。(2人)4分
●为Windows操作系统建立一个兼容Unix命令的命令接口;
●实现命令包括ls,cat,cp,mv,md,rd,cd,sort,more,print,命令的内容与详细格式请查
阅unix命令手册;
●可以字符形式接收命令,执行命令,然后显示命令执行结果;
(二)原理及算法描述:
通过visual C++6.0中自带的system()函数将输入的Unix命令转换成windows
dos系统下相对应的命令,进行执行即可完成Unix命令的操作。
Unix命令在dos中对应的命令如下:
◆语法
显示目录或文件名的内容
ls -f [ -C ] [ -d ] [ -i ] [ -m ] [ -s ] [ -x ] [ -1 ] [ Directory ... ]
描述:
ls 命令将每个由Directory 参数指定的目录或者每个由File 参数指定的名称写到标准输出,以及您所要求的和标志一起的其它信息。如果不指定File 或Direct ory 参数,ls 命令显示当前目录的内容。
当ls 命令显示目录内容时,它不显示名称以.(点)开头的文件项,除非使用了-a 或者-A 标志。如果命令由root 用户执行,它缺省使用-A 标志。
◆函数实现
void ls(string *lsinput,int lscount)
{
string result="dir "+lsinput[1];
if(lscount == 1)
{
system("dir");
}
else if(lscount == 2){
if(lsinput[1] == "+?" )
cout< else{ char fc[200]; if(!::GetCurrentDirectory(200,fc)) { cout<<"路径可能不存在!"< return; } if(!SetCurrentDirectory(lsinput[1].c_str())) { cout<<"路径可能不存在!"< return; } system(result.c_str()); } } } (2)cat ◆语法 cat text 显示text这个文件; cat file1 file2 依顺序显示file1,file2的内容; cat file1 file2>file3 把file1,file2的内容结合起来,再“重定向(>)”到file3文件中。 ◆函数实现 void cat(string *catinput,int catcount) { string file_name,s; if(catcount == 2) { if(catinput[1] == "+?" ) { cout< } else { file_name=catinput[1]; ifstream input(file_name.c_str(),ios::in); if (!input) { cout<<"无法打开文件 "< return; } cout< while(!input.eof()) { getline(input,s); cout< } } } } (3)cp ◆语法 在Linux中CP的功能是将文件和目录从一个文件拷贝到另一个目录常用参数:-i、-f、-r -i:当目录文件存在时。系统提示直接拷贝 -f:目标文件存在时不给提示直接拷贝 -r:拷贝这个目录及目录里的富有文件和子目录 Cp索引(Cp index) ◆函数实现 void cp(string *cpinput,int cpcount) { if(cpcount == 2) { if(cpinput[1] == "+?" ) { cout< } } else if(cpcount == 3) { string result="copy "+cpinput[1]+" "+cpinput[2]; if(system(result.c_str())) cout<<"文件或目录可能不存在!"< else cout<<"复制成功"< }} (4)rm ◆语法 用户可以用rm命令删除不需要的文件。该命令的功能问删除一个目录中的一个或多个文件或目录,他也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,源文件保持不变。 ◆函数实现 void rm(string *rminput,int rmcount) {