Linux报告-昆明理工大学欧阳鑫(共35页)

上传人:20022****wzdgj 文档编号:46572755 上传时间:2021-12-14 格式:DOC 页数:41 大小:2.78MB
收藏 版权申诉 举报 下载
Linux报告-昆明理工大学欧阳鑫(共35页)_第1页
第1页 / 共41页
Linux报告-昆明理工大学欧阳鑫(共35页)_第2页
第2页 / 共41页
Linux报告-昆明理工大学欧阳鑫(共35页)_第3页
第3页 / 共41页
资源描述:

《Linux报告-昆明理工大学欧阳鑫(共35页)》由会员分享,可在线阅读,更多相关《Linux报告-昆明理工大学欧阳鑫(共35页)(41页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上昆明理工大学信息工程与自动化学院学生实验报告( 2016 2017 学年 第 二 学期 )课程名称:Linux操作系统及程序设计 开课实验室:呈贡校区信自楼 2017 年6 月 3 日年级、专业、班学号 姓名成绩实验项目名称Linux操作系统及程序设计指导教师欧阳鑫教师评语该同学是否了解设计原理: A.了解B.基本了解C.不了解该同学的上机能力: A.强 B.中等 C.差 该同学的上机是否达到要求 : A.达到 B.基本达到C.未达到上机报告是否规范: A.规范 B.基本规范C.不规范上机过程是否详细记录: A.详细 B.一般 C.没有 注:5个A 为优 4个A为良

2、3个A 为及格 其余为不及格。教师签名: 年 月 日目录上机一:Linux及开发环境安装 . ? 页上机二:Linux的文件及目录操作1. ? 页上机三:Linux的文件及目录操作2 . ? 页上机四:Linux进程及网络开发1. ? 页上机五:Linux进程及网络开发2. ? 页上机一:Linux及开发环境安装一、实验目的及要求 安装虚拟机,并在虚拟机上安装ubuntu系统二、实验环境和相关软件及版本 Windows7,VMware-workstation-full-10.0.4-,vm10keygen,ubuntu-16.04-desktop-amd643、 实验内容及步骤 (一)安装虚拟

3、机双击打开下载好的VMware Workstation应用程序弹出安装向导勾选我接受许可协议中的条款选择典型安装选择安装路径点下一步继续进行安装在桌面创建快捷方式点下一步继续弹出注册码页面打开VMware注册机并点击Generate获取注册码输入注册码安装完成并打开(2) 安装ubuntu打开VMware Workstation并点击创建新的虚拟机安装光盘映像文件设置用户名和密码命名虚拟机制定磁盘容量准备创建虚拟机安装中安装成功并登录4、 实验结果、分析和结论 本次实验我成功安装了虚拟机,对Linux有了第一次比较接近的认识,在课上学习是比不上自己实际动手操作的,在这个过程中我感觉自己对Lin

4、ux产生了一些兴趣,受益良多。上机二: Linux的文件及目录操作1一、实验目的及要求 掌握文件及目录操作的基本命令,并在虚拟机上启动命令行加以实现二、实验环境和相关软件及版本 Windows7、VMware、ubuntu3、 实验内容及步骤1、用ls命令显示当前目录下的文件2、 用mkdir创建一个目录文件3、用rmdir删除一个目录文件删除空目录删除非空目录4、用lsl命令显示当前目录下的文件的文件属性5、用mv命令改变文件名6、用chmod命令改变文件属性(改为可执行文件)7、用cp命令复制文件8、用gzip命令压缩文件成.gz文件9、用gzipdv命令解压文件四、实验结果、分析和结论

5、通过这次实验,我第一次在Linux系统下使用命令,基本掌握了文件和目录的创建和删除、文件复制、文件编辑、文件重命名、显示和改变文件属性、压缩文件和解除压缩等基本命令,但是对于这些命令还不熟悉,需要多加使用以此巩固。上机三:Linux的文件及目录操作2一、实验目的及要求 利用系统调用和标准函数库对文件和目录进行操作。二、实验环境和相关软件及版本 Windows7、VMware、ubuntu 三、实验内容及步骤编写.C文件 调用.C文件编译并运行.C文件 READ系统调用编写READ.C文件READ系统调用编译READ.C文件4、 实验结果、分析和结论 通过此次实验,我对在Linux系统中使用C语

6、言操作和系统调用等有了一定的了解,同时也遇到了一些难题,对很多函数库的用法以及深层次的文件目录操作都很欠缺,对难题也没有很好地解决,还需要多加练习动手,这方面的技术和能力还有待加强。上机四:Linux进程及网络开发1一、实验目的及要求 利用ForkThread等系统调用进行网络开发二、实验环境和相关软件及版本 Windows7、VMware、ubuntu三、实验内容及步骤程序1:fork进程控制#includemain()intp1,p2,i; if(p1=fork()for(i=0;i500;i+)printf(child%dn,i); elseif(p2=fork()for(i=0;i50

7、0;i+)printf(son%dn,i); 编写编译运行的过程如下:程序2:#include#includeintmain()pid_tfpid;/printf(fork!); printf(fork!/n); fpid=fork(); if(fpid0)printf(errorinfork1); elseif(fpid=0)printf(Iamthechildprocess,myprocessidis%d/n,getpid();elseprintf(Iamtheparentprocess,myprocessidis%d/n,getpid();return0;编写编译运行的过程如下:4、 实

8、验结果、分析和结论 通过此次实验我对在Linux中的进程调控有了一些认识,并且基本掌握了进程调控的一些方法,只是学习还很浅,需要不断深入加强。 上机五:Linux进程及网络开发2一、实验目的及要求 开发一个Linux命令行基于C/S结构的TCP/IP的即时聊天程序。2、 实验环境和相关软件及版本Windows7、VMware、ubuntu三、实验内容及步骤1、客户端设计流程:2、服务端设计流程:3、编写服务端收发消息程序server.c:专心-专注-专业#include#include#include/数据类型定义#include#include/定义数据结构sockaddr_in#inclu

9、de/提供socket函数及数据结构#include#include#include#include#include#include#include#definePERMS_IRUSR|S_IWUSR#defineMYPORT3490/宏定义定义通信端口#defineBACKLOG10/宏定义,定义服务程序可以连接的最大客户数量#defineWELCOME|-Welcometothechatroom!-|/宏定义,当客户端连接服务端时,想客户发送此欢迎字符串/转换函数,将int类型转换成char*类型voiditoa(inti,char*string)intpower,j;j=i;for(po

10、wer=1;j=10;j/=10)power*=10;for(;power0;power/=10)*string+=0+i/power;i%=power;*string=0;/得到当前系统时间voidget_cur_time(char*time_str)time_ttimep;structtm*p_curtime;char*time_tmp;time_tmp=(char*)malloc(2);memset(time_tmp,0,2);memset(time_str,0,20);time(&timep);p_curtime=localtime(&timep);strcat(time_str,()

11、;itoa(p_curtime-tm_hour,time_tmp);strcat(time_str,time_tmp);strcat(time_str,:);itoa(p_curtime-tm_min,time_tmp);strcat(time_str,time_tmp);strcat(time_str,:);itoa(p_curtime-tm_sec,time_tmp);strcat(time_str,time_tmp);strcat(time_str,);free(time_tmp);/创建共享存储区key_tshm_create()key_tshmid;/shmid=shmget(IPC

12、_PRIVATE,1024,PERM);if(shmid=shmget(IPC_PRIVATE,1024,PERM)=-1)fprintf(stderr,CreateShareMemoryError:%sna,strerror(errno);exit(1);returnshmid;/端口绑定函数,创建套接字,并绑定到指定端口intbindPort(unsignedshortintport)intsockfd;structsockaddr_inmy_addr;sockfd=socket(AF_INET,SOCK_STREAM,0);/创建基于流套接字my_addr.sin_family=AF_I

13、NET;/IPv4协议族my_addr.sin_port=htons(port);/端口转换my_addr.sin_addr.s_addr=INADDR_ANY;bzero(&(my_addr.sin_zero),0);if(bind(sockfd,(structsockaddr*)&my_addr,sizeof(structsockaddr)=-1)perror(bind);exit(1);printf(bingsuccess!n);returnsockfd;intmain(intargc,char*argv)intsockfd,clientfd,sin_size,recvbytes;/定义

14、监听套接字、客户套接字pid_tpid,ppid;/定义父子线程标记变量char*buf,*r_addr,*w_addr,*temp,*time_str;/=0;/定义临时存储区structsockaddr_intheir_addr;/定义地址结构key_tshmid;shmid=shm_create();/创建共享存储区temp=(char*)malloc(255);time_str=(char*)malloc(20);sockfd=bindPort(MYPORT);/绑定端口while(1)if(listen(sockfd,BACKLOG)=-1)/在指定端口上监听perror(liste

15、n);exit(1);printf(listening.n);if(clientfd=accept(sockfd,(structsockaddr*)&their_addr,&sin_size)=-1)/接收客户端连接perror(accept);exit(1);printf(acceptfrom:%dn,inet_ntoa(their_addr.sin_addr);send(clientfd,WELCOME,strlen(WELCOME),0);/发送问候信息buf=(char*)malloc(255);ppid=fork();/创建子进程if(ppid=0)/printf(ppid=0n);

16、pid=fork();/创建子进程while(1)if(pid0)/父进程用于接收信息memset(buf,0,255);/printf(recvn);/sleep(1);if(recvbytes=recv(clientfd,buf,255,0)=0)perror(recv1);close(clientfd);raise(SIGKILL);exit(1);/writebufsdatatosharememoryw_addr=shmat(shmid,0,0);memset(w_addr,0,1024);strncpy(w_addr,buf,1024);get_cur_time(time_str);

17、strcat(buf,time_str);printf(%sn,buf);elseif(pid=0)/子进程用于发送信息/scanf(%s,buf);sleep(1);r_addr=shmat(shmid,0,0);/printf(-%sn,r_addr);/printf(cmp:%dn,strcmp(temp,r_addr);if(strcmp(temp,r_addr)!=0)strcpy(temp,r_addr);get_cur_time(time_str);strcat(r_addr,time_str);/printf(discriptor:%dn,clientfd);/if(send(

18、clientfd,buf,strlen(buf),0)=-1)if(send(clientfd,r_addr,strlen(r_addr),0)=-1)perror(send);memset(r_addr,0,1024);strcpy(r_addr,temp);elseperror(fork);printf(-n);free(buf);close(sockfd);close(clientfd);return0;4、编写客户端收发消息程序client.c#include#include/定义数据结构sockaddr_in#include/提供socket函数及数据结构#include/数据类型定

19、义#include#include#include#include#include#includeintmain(intargc,char*argv)structsockaddr_inclientaddr;/定义地址结构pid_tpid;intclientfd,sendbytes,recvbytes;/定义客户端套接字structhostent*host;char*buf,*buf_r;if(argch_addr);bzero(&(clientaddr.sin_zero),0);if(connect(clientfd,(structsockaddr*)&clientaddr,sizeof(st

20、ructsockaddr)=-1)/连接服务端perror(connectn);exit(1);buf=(char*)malloc(120);memset(buf,0,120);buf_r=(char*)malloc(100);if(recv(clientfd,buf,100,0)=-1)perror(recv:);exit(1);printf(n%sn,buf);pid=fork();/创建子进程while(1)if(pid0)/父进程用于发送信息/get_cur_time(time_str);strcpy(buf,argv3);strcat(buf,:);memset(buf_r,0,10

21、0);/gets(buf_r);fgets(buf_r,100,stdin);strncat(buf,buf_r,strlen(buf_r)-1);/strcat(buf,time_str);/printf(-%sn,buf);if(sendbytes=send(clientfd,buf,strlen(buf),0)=-1)perror(sendn);exit(1);elseif(pid=0)/子进程用于接收信息memset(buf,0,100);if(recv(clientfd,buf,100,0)=0)perror(recv:);close(clientfd);raise(SIGSTOP);exit(1);printf(%sn,buf);elseperror(fork);close(clientfd);return0;四、实验结果、分析和结论 此次实验我参考了书籍,询问了同学,在过程中也遇到了一些难题,甚至没有解决完,我认识到自己所学的还远远不够,也明白了设计和开发一个软件是一项复杂的工程,需要前期预研,前期设计,模块设计,编码,调试,再编码,再调试等复杂的流程,缺一不可。由于以前学得不好,导致现在出错多、技术比好等问题,以后还遇到不断学习巩固来加强自己。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!