操作系统实验一 系统调用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

huixing操作系统实验一

姓名:廖桉冬学号:09012431

日期:15/3/27

实验内容:

使用系统调用,用C或C++写一个程序,实现如下功能:从一个文件中读出数据,写入另一个文件中。

实验要求:

具有良好的交互性

使用者可输入源文件和目的文件的路径和文件名。

具有完善的错误处理机制

针对可能出现的各种错误,要有相应的错误提示输出,并作相应处理。

在Windows和Linux操作系统上调试并运行

实验目的:

通过实验,加深对系统调用概念的理解,了解其实现机制以及使用方式。

通过在Linux操作系统上编写和调试简单程序,进一步熟悉Linux操作系统的使用,初步掌握linux环境下的C或C++编译和调试工具,为进一步理解和学习Linux操作系统的内核结构和核心机制作准备。

设计思路和流程图

读入源文件/目标文件名-->打开文件流-(打开是否正常)->将源文件字符流读出暂存-->将字符流输出到目标文件;

主要数据结构及其说明

string:暂存文件名

ifstream/ofstream:文件流输入输出

a:字符暂存

源程序并附上注释

#include

#include

#include

using namespace std;

int main() {

//读取文件名

string infile;

string outfile;

cout<<"输入你想要读取的文件名/(路径) :"<

cin>>infile;

cout<<"输入你想要写入的文件名/(路径) :"<

cin>>outfile;

//打开文件流

ifstream f_in(infile.c_str());

ofstream f_out(outfile.c_str(),ios::app);

if(!f_in) {

cout<<"源文件不存在."<

exit(0);

}

if(!f_out) {

cout<<"目标文件无法打开."<

exit(0);

}

//字节流读取

char a;

while(!f_in.eof())

{

f_in>>a;

f_out<

}

//关闭文件

f_in.close();

f_out.close();

cout<<"复制成功."<

system("Pause");

return 0;

}

程序运行时的初值和运行结果

//windows

//源文件

//运行程序

//目标文件

//Linux

//中文编码错误,修改英文重新编译

//结果文件

实验体会:

本次实验最大的困难就是linux的安装使用,以及linux下编译运行程序的方法。通过查阅代码,安装gcc库,熟悉linux,掌握了基本的操作技巧并成功实现程序运行。

而对于不同操作系统上的c++代码,使用了相同的函数、函数库,但是在底层操作系统的调用上截然不同。

Win32使用

HANDLE WINAPI CreateFile(

__in LPCTSTR lpFileName,

__in DWORD dwDesiredAccess,

__in DWORD dwShareMode,

__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,

__in DWORD dwCreationDisposition,

__in WORD dwFlagsAndAttributes,

__in_opt HANDLE hTemplateFile);

HANDLE WINAPI ReadFile(...);

HANDLE WINAPI WriteFile(...);等方法读写文件。

Linux中则是

size_t write(int fildes, const void *buf, size_t nbytes);

size_t read(int fildes, void *buf, size_t nbytes);的配合使用

相关文档
最新文档