欢迎来到天天文库
浏览记录
ID:860601
大小:995.53 KB
页数:21页
时间:2017-09-21
《网络操作系统课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一共有4个部分,但最后一个代码量过大,没有写出来,不过我上传到了csdn上,叫“ubuntu下用gtk实现仿windows资源管理器”比较有借鉴意义的可能就是后3个吧。一、目的1、掌握Linux操作系统的使用方法;2、了解Linux系统内核代码结构;3、掌握实例操作系统的实现方法。 二、实验内容1、掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux下的编程环境。编一个C程序,其内容为实现文件拷贝的功能;编一个C程序,其内容为分窗口同时显示三个并发进程的运行结果。要求用到Linux下的图形库。 2、掌握系统调用的实现过程,通过编
2、译内核方法,增加一个新的系统调用。另编写一个应用程序,调用新增加的系统调用。实现的功能是:文件拷贝; 3、掌握增加设备驱动程序的方法。通过模块方法,增加一个新的设备驱动程序,其功能可以简单。实现字符设备的驱动 4、了解和掌握/proc文件系统的特点和使用方法了解/proc文件的特点和使用方法监控系统状态,显示系统中若干部件使用情况用图形界面实现系统监控状态。 5、文件系统(选作) 三、系统环境1、硬件环境: 处理器:Intel(R) Core(TM)2 Duo CPU T7250 @2.00GHz 2.00GHz
3、 内存(RAM):1526MB2、软件环境: 操作系统:ubuntu9.10 内核版本:linux2.6.32.10 四、设计与实现 1.1、文件拷贝 文件拷贝函数本身并不是很难,主要是用到了一些现有的函数如fprintf等。在最开始写这个函数的时候,我只写了打开、创建和拷贝的那一部分,代码量很少,没有过多的去考虑当出现了错误时的情况。后来我在网上接触到了一些比较优秀的拷贝代码,意识到了对于拷贝失败时的情况要输出错误信息,就增加了比较多的条件判断和错误信息输出,才有了这个最终的版本
4、。编译时使用的命令:gcc -o test1_1 test1_1.c运行时使用的命令:./test1_1 源代码#include#include#include#include#include#include#include#defineBUFFER_SIZE1024 //缓冲区大小intmain(intargc,char**argv){ intfrom_fd,to_fd;
5、 intbytes_read,bytes_write; charbuffer[BUFFER_SIZE]; //设定一个缓冲区 char*ptr; if(argc!=3) //三个参数 { fprintf(stderr,"Usage:%sfromfiletofilea",argv[0]); return(-1); } /* 打开源文件 */ if((
6、from_fd=open(argv[1],O_RDONLY))==-1) { fprintf(stderr,"Open%sError:%s",argv[1],strerror(errno)); return(-1); } /* 创建目的文件 */ if((to_fd=open(argv[2],O_WRONLY
7、O_CREAT,S_IRUSR
8、S_IWUSR))==-1) {
9、 fprintf(stderr,"Open%sError:%s",argv[2],strerror(errno)); return(-1); } while(bytes_read=read(from_fd,buffer,BUFFER_SIZE)) { /* 一个致命的错误发生了 */ if((bytes_read==-1)&&(errno!=EINTR))break;
10、 elseif(bytes_read>0) {
此文档下载收益归作者所有