实验一 系统调用
姓名: 学号:
完成日期:
【实验类容】
使用系统调用,用C或C++写一个程序,实现如下功能:从一个文件中读出数据,写入另一个文件中。 要求:
1. 具有良好的交互性
使用者可输入源文件和目的文件的路径和文件名。 2. 具有完善的错误处理机制
针对可能出现的各种错误,要有相应的错误提示输出,并作相应处理。 3. 在Linux操作系统上调试并运行
【实验目的】
1. 通过实验,加深对系统调用概念的理解,了解其实现机制以及使用方式。
2. 通过在Linux操作系统上编写和调试简单程序,进一步熟悉Linux操作系统的使用,初
步掌握linux环境下的C或C++编译和调试工具,为进一步理解和学习Linux操作系统的内核结构和核心机制作准备。
【设计思路和流程图】
1. 由于在并没有安装开发工具,因此采用终端编译及运行程序 2. 该实验的主要工作是文件的拷贝,因此调用类库
3. 拷贝文件的时候,不需要考虑文件的格式,只需要将文件里面的字节逐个拷贝就可以了
【源程序并附上注释】
#include
int main(int argc, char **argv) {
cout << \ << argv[2] << \ << argv[3] << \ << endl; ifstream in(argv[2], ios::binary | ios::in); //the file needed to copy is not exited if (!in) { }
ofstream out(argv[3], ios::binary | ios::out); char it;
cout << \ << argv[2] << \ << endl; system(\); return -1;
}
while (in.get(it))
out << it; in.close(); out.close();
cout << \ << endl; system(\); return 0;
【实验体会】
(1) 程序中用到的系统调用及调用的功能
在使用g++编译程序时,会用到系统调用的文件系统控制部分的函数,主要是文件的读与写,这些系统调用主要是文件的读写操作:
read 读文件
write 写文件 open 打开文件 create 创建新文件 lseek 移动文件指针 close 关闭文件
(2) 在Windows操作系统中与这些系统调用相对应的Windows32 API及函数原型。
API Linux 系统调用 ReadFile read WirteFile write CreateFile Open CloseHandle Close SetFilePointer lseek

