操作系统课程设计实验报告

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

{

相关文档
最新文档