Linux报告-昆明理工大学欧阳鑫_第1页
Linux报告-昆明理工大学欧阳鑫_第2页
Linux报告-昆明理工大学欧阳鑫_第3页
Linux报告-昆明理工大学欧阳鑫_第4页
Linux报告-昆明理工大学欧阳鑫_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

昆明理工大学信息工程与自动化学院学生实验报告(2016 —2017学年第二学期)课程名称: 操作系统及程序设计开课实验室:呈贡校区信自楼 年260月173日年级、专业、班学号姓名成绩实验项目名称《操作系统及程序设计》指导教师欧阳鑫教师该同学是否了解设计原理:了解口基本了解口不了解口评语该同学的上机能力:该同学的上机是否达到要求强口:达到口中等口基本达到口差口未达到口上机报告是否规范:上机过程是否详细记录:规范口详细口基本规范口一般口不规范口没有口注:个为优个为良个为及格其余为不及格。教师签名:年月日目录\o"CurrentDocument"上机一:Linux及开发环境安装 ?页上机二:LinuX的文件及目录操作1 ?页上机三:LinuX的文件及目录操作2 ?页\o"CurrentDocument"上机四:LinuX进程及网络开发1 ?页上机五:LinuX进程及网络开发2 ?页上机一:Linux及开发环境安装、实验目的及要求安装虚拟机,并在虚拟机上安装系统二、实验环境和相关软件及版本,三、实验内容及步骤(一)安装虚拟机双击打开下载好的应用程序弹出安装向导VMwareWorkstation安装警告:此程序受版权法和国际条约保护0欢却使用VMWareWOrkStatiOn安装向导安装向导将在您的计算机上安装VMwareWorkstation。要维续,请单击“下一步”。下一步⑼>vmwareWorkstation勾选我接受许可协议中的条款选择典型安装选择安装路径点下一步继续进行安装在桌面创建快捷方式VMwareWorkstation⅛⅛在以下位置创建VMwareWorkstation的快捷方式。0卓面⑪国开始菜单程序文件夹图<上一步回下一步时>快捷方式选择您要放人系统的快捷方式0点下一步继续弹出注册码页面输入注册码安装完成并打开rMv.ιareWorkstationQ在此处键入内容澄行搜索▼里我的计算机里共享虚拟机vmwareWorkstation10连接远程!第器在远程服务器上查看和莒理在拉机.软件更新虚拟化物理机从现有物理机创建虚拟机.(二)安装打开新建虚拟机向导并点击创建新的虚拟机欢迎使用新建虚拟机向导您希望使用什么案型的断置?建典型(推荐)仃)通过几个简单的步骤创建WmkSGtbn10.0虚撅机。自定义(高级NC)创建带有SCSI控制器类型、虚拟磁盘类型以及与旧版VMwBre产品兼容性等高级选项的虚拟机。帮助] <上一步出)][下一步(M)AJ[取消女长苑懿吠1豕乂仟设置用户名和密码制定磁盘容量安装中fɪjUbuntu64位-VMWareWorkstationΘMi我的计算机埠Ubuntu64位,单击虚拟屏幕

3可发送按键安装成功并登录四、实验结果、分析和结论本次实验我成功安装了虚拟机对 有了第一次比较接近的认识,在课上学习是比不上自己实际动手操作的,在这个过程中我感觉自己对产生了一些兴趣,受益良多。上机二:Linux的文件及目录操作1一、实验目的及要求掌握文件及目录操作的基本命令,并在虚拟机上启动命令行加以实现二、实验环境和相关软件及版本Wi7nd、oVwMswa、ruebuntu三、实验内容及步骤1用命令显示当前目录下的文件、用创建一个目录文件lyr⅞ubuntuπkdirtest1Iy「@iJbUntUTtotal48dEX「=x「=x3.IsIV「-Liyr4096Jun611:45Desktopdrwxr-xr-x2IV「IV厂4096Jun608:59Documentsdrwxr-xr-x2IV「IV厂4096Jun608:59Downloads-rw-「=-「=-1IV「iyr89S0Jun608:51exaπples.desktopdrwxr-xr-x2IV「IV厂4096Jun608:59Musicdrwxr-xr-x2IV「IV厂4096Jun608:59Picturesd「以X「・x「・x2IV「iyr4096Jun608:59Publicdrwxr-xr-x2IV「IV厂4096Jun608:59TemplatesdEX「wx「kx2IV「Iyr4096Jun611:51testld「以X「・x「-x2iyrIV「4096Jun608:59Vtdeoslyr@ubuntu:-$nkdir-ptest2∕test2.2lyr@ubuntu:T「IS-itotal52drwxr-xr-x3IV「iyr4096Jun611:45Desktopdrwxr-xr-x2IV「iyr4096Jun608:59Documentsdrwxr-xr-x2IV「IV厂4096Jun608:59Downloads-rw-r--r--1IV「iyr8980Jun608:51examples*desktopdrwxr-xr-x2IV「iyr4096Jun608:59Musicdrwxr-xr-x2IV「IV厂4096Jun608:59Picturesdrwxr-xr-x2IV「iyr4096Jun608:59Publicdrwxr-xr-x2IV「iyr4096Jun608:59Templatesdrwxrwxr-x2IV「IV厂4096Jun611:51testldrwxrwxr-x3IV「IV厂4096Jun611:54test2d「NX「-x「-x2IyrJyr4096Jun6◎S:59VideQSILVrJbUntUA写nkdir-vptest3∕test3*3πkdir:createddirectory1tests1nkdir:createddirectory1test3∕test3i33用 删除一个目录文件删除空目录V「@UbUntU»5rndirtestlV「@UbUntUA5Is-1otðl52d∣rwxr-xr-x3IV厂Iyr4096Jun611:45Desktopd∣rwxr-xr-x2IVrIyr4096Jun608:59Documentsdlrwxr-xr-x2IV厂IV厂4096Jun608:59Downloads-rw-「一「一1IV厂Iyr8980Jun608:51examples.desktopd∣rwxr-xr-x2IVrIyr4096Jun608:59Musicdlrwxr-xr-x2IV厂IV厂4096JUn608:59Picturesd∣rwxr-xr-x2IV厂Iyr4096Jun608:59Publicd∣rwxr-xr-x2IVrIyr4096Jun608:59Templatesdlrwxrwxr-X3IV厂IV厂4096JUn611:54test2d∣rwxrwxr-X3IV厂Iyr4096Jun611:58test3d∣rwxr-xr-x2IVrIyr4096Jun608:59Videos删除非空目录IyHgubuntuASrπDesktoprπ:cannotremove1Desktop1;IscIdirectoryIyngiJbUntUA$「Is-1total52drwxr-xr-x3IV「IV「4096Jun611:45Desktopdrwxr-xr-x2IV「IV「4096Jun608:59Documentsdrwxr-xr-x2IV「IV「4096Jun608:59Downloads-rw-「=-「=-1IV「IV「8980Jun6◎8:51exanplesidesktopdrwxr-xr-x2IV「IV「4096Jun6◎8:59Musicdrwxr-xr-x2IV「IV「4096Jun6◎8:59Picturesdrwxr-xr-x2IV「IV「4096Jun6◎8:59Publicdrwxr-xr-x2IV「IV「4096Jun6◎8:59Templatesdrwxrwxr'x3IV「IV「4096Jun611:54test2drwxrwxr'x3IV「IV「4096Jun611:58te≡t3drwxr-xr-x2l灯IV「4096Jun6◎8:59Videos、用-命令显示当前目录下的文件的文件属性IVr@iJbUntUA5Is-ə* tconfig.gconfPicturesVideos・■Desktop.gnupgiprofileiXauthorlty*bash_history•dnrc*ICEauthorityPublicixsession-errors.bashlogoutDocumentsAocalTemplates.x&e&sion-errorsiold*bðshreDownloads.PiQzVLlatest2.cacheexamples.desktopMusictest3、用命令改变文件名IV「@iJbUntU:TπιvDesktop/filesfileILV「@iJbUntUAS1≡-1total56d∣rwxr-xr-x2IV「IVr4096IUn612:17Desktopd∣rwxr-xr-x2IV「Iyr4096Jun608:59Documentsd∣rwxr-xr-x2IV「IVr4096Jun608:59Downloads-rw-r--r--1IV「IV「S980Jun608:51examples*desktopd∣rwxr-xr-x2IV「IVr4096Jun611:43filed∣rwxr-xr-x2IV「IVr4096Jun608:59Musicdlrwxr-xr-x2IV「IV「4096Jun608:59Picturesd∣rwxr-xr-x2IV「IVr4096Jun608:59Publicd∣rwxr-xr-x2IV「IVr4096Jun608:59Templatesdlrwxrwxr-x3IV「IVr4096Jun611:54testad∣rwxrwxr-x3IV「IVr4096Jun611:58test3d∣rwxr-xr-x2IV「Iyr4096Jun608:59Videos、用 命令改变文件属性(改为可执行文件)ILV「@(JbUntUASchπodDesktop/file/kodld.jpg∣+rko∂lβΛxtchmod:invalidnode:fDesktop∕file∕ko∂la*jpg+r*Try1chmod--help1formoreinfɔrnðtion.、用命令复制文件IyrQubuntu:-SCPIyr⅞ubuRtu:Is-ajavaeeljavaeeΛtotal284。drwxr-xr-xdrwxr-xr-xdrwxr-xrx-ΓW■r--r--drwxr-xr-x-「w-r-1「---rw-r--r-d「Hx「』「∙xdrwxr-xr-xdrwxr-xr-xdrwxr-xr-xdrwxrwxr-xdrwxrwxr-xdrwxr-xr-x2212112222IyrIV广IV「iyrIyrIyrIyrIV「IV「IV「IV「Xyriv「Ivr40964096409689S0409614246Θ9142460940904fl9640964090409640964096JunJUnJunJu∩JUnAprAprJunJunJunIUnJunJunJunð666612126656666DesktopDocumentsDownloadsexamples.desktopfilejavaeel*docxJavaee.docxMusicPteturesPublicTemplatestestztestsVideos、用 命令压缩文件成 文件Lyr@ubuntu:$gztptest2.txtgztp:test2,txtisadirectory--ignoredlyr⅛ubuπtui"SISDesktop exanpYes.desktop javaee.docx Public test3Documents file Music Templates Videos卜。*口1,口ads javgecLdocx PietUre5 te*±2.g1、用- 命令解压文件lyr@ubuntugzip-dvtest2*gzgzɪp:test2*gzisðdirectory--ignoredIyrQubuntu:~SISDesktop examples*desktop jðvðee.docx Public testsDocuments file Music Templates VideosDownloads jðvðeel*docx Pictures test2.txt四、实验结果、分析和结论通过这次实验,我第一次在Linux系统下使用命令,基本掌握了文件和目录的创建和删除、文件复制、文件编辑、文件重命名、显示和改变文件属性、压缩文件和解除压缩等基本命令,但是对于这些命令还不熟悉,需要多加使用以此巩固。上机三:LinuX的文件及目录操作2一、实验目的及要求利用系统调用和标准函数库对文件和目录进行操作。二、实验环境和相关软件及版本三、实验内容及步骤编写文件Oinclud已VIJniStd.h>Sincludecstdlib.h>intnðin()if((write(1,,,hereissomedata,r,18))1-18)write(2,,rawrite巳「「◎「hasoccurredonfiledescriptorl∖n,',46);exit(0);mynew.c(»/Desktop)-gedit调用文件IyrQubuntu:«$catDesktop∕nyπew.c#include<unistd*h>#includeKStdIib*h>intPlain(){if((write(l,,lhereissomeddtə",18))-18)write(2,,'awriteerrorhasoccurredonfiledescriptorl∖n”,46);exit(0);编译并运行文件Iyr@iIbUlIItUA5gccDesktop∕nyπew.clyr⅞ubuntu:-$√a,outhereissomed∂t∂lyr⅞ubuntu:∣系统调用——编写 文件#include<stdlib.h>intnəin()charbuffer[128];intnreəd;nread_read(θrbuffer,128);if(nread==l)write(2,,rareaderrorhəsoccured∖n,1,26);if((⅛fri⅛e(lrbuffer,nread))1=nread)WiritR(2,"awriteerrorhəsoccured∖n,r,27);exit(θ);REAcMZ(-/Desktop)-gedit系统调用一一编译 文件lyr⅞ubuntugccDesktop/READ4CDesktop/READ.C:Infunctionfintmatn()':口esktop/REA口":6:24:rror:"nread_read*WdSnotdeclaredtnthisscopenread-read(βjbufferj128);A口esktop/REA口":8:40:rror:"write*wðsnotdeclaredinthisscopewrɪte(2,,r∂readerrorhasoccured∖n'r,26);ADesktop/READ.C:9:25:rror:fwrite*wasnotdeclaredinthisscopeif((write(ljlbufferjnread))!=πread)四、实验结果、分析和结论通过此次实验,我对在 系统中使用语言操作和系统调用等有了一定的了解,同时也遇到了一些难题,对很多函数库的用法以及深层次的文件目录操作都很欠缺,对难题也没有很好地解决,还需要多加练习动手,这方面的技术和能力还有待加强。上机四:Linux进程及网络开发1一、实验目的及要求利用 等系统调用进行网络开发二、实验环境和相关软件及版本三、实验内容及步骤程序1 进程控制编写编译运行的过程如下:lyr⅞ubuntu:catDesktop/forkl*c

tfinclude<stdio*h>

nəin(){intρl,ρ2,i;if(pl=fork())for(i=0;i<500;ii-i-)PIrintf=("child%d∖n,r,i);else{if(ρ2=fork())for(i=0;i<500;ii-i-)printf("son%d∖n",i);lyr⅞ubuntu:»$gccDesktop/forkl.cDesktop/fDrkl.c:2:1:warning:returntypedefaultstoftnt'[-Winpliclt-Int]nain()ADesktDp∕fDrkl.c:Infunctionfπain,:Desktop/fDrkl.c:5:7:warning:implicitdeclarationoffunction'fork'[-Winplicit-function-declaration]if(ρl=forkQ)❽G@IV「@iJbUntU:-son484sonsonsonsonsonsonsonsonsonsonsonsonson477478479480481482483485486487488489490491492495496497498499sonsonsonsonsonsonsonson493son494程序2:编写编译运行的过程如下:Iy「@iJbUntUA5eðtDesktop∕fork2,c⅛includecunistd*h>⅛tnclude<stdio*h>intnəin()(Pldtfpid;//printf("fork!,r);prtntf("fork!∕n,r);fpid=fork();if(fpid<θ)printf(,lerrorinforklr,);elseif(fpid=e)PrTintf("I thechildprocess,nyprocessidis%d∕n'r,getpid());elseprintf(,rIðntheparentprocess,πyprocessidis%d∕n'r,getpid());return0;lyr⅞ubuntuz~⅞gccDesktop∕fork2.clyι*0ιJbUntUAS∙/ð.outfork!∕∏Iəntheparentprocess,nyprocessidi&3δO4∕nlyr⅝ubuntιιfork!∕∏I∂∏thechildprocess,πyprocessidis38θ5∕n Z四、实验结果、分析和结论通过此次实验我对在 中的进程调控有了一些认识,并且基本掌握了进程调控的一些方法,只是学习还很浅,需要不断深入加强。上机五:Linux进程及网络开发2一、实验目的及要求开发一个 命令行基于结构的 的即时聊天程序。二、实验环境和相关软件及版本三、实验内容及步骤1、客户端设计流程:是否输入Pthread_Cr巳atɔ;接受键盘输入打印信息Connect();执彳丁threadmainQ.ReeΛ0定长数据品IId0:定长数据创建、设置套接字Clo≤e(5ock)开始创建、⅛5置套接字Nameland();、服务端设计流程:创建、设置套接字Bamd();ListrrenO≡5endQ转发信息3编写服务端收发消息程序#include<stdio.h>#include<stdlib.h>#include<sys/types.h> //数据类型定义#include<sys/stat.h>#include<netinet/in.h>//定义数据结构sockaddr_in#include<sys/socket.h>//提供socket函数及数据结构#include<string.h>#include<unistd.h>#include<signal.h>#include<sys/ipc.h>#include<errno.h>#include<sys/shm.h>#include<time.h>#definePERMS_IRUSR|S_IWUSR#defineMYPORT3490 //宏定义定义通信端口#defineBACKLOG10//宏定义, 定义服务程序可以连接的最大客户数量#defineWELCOMEcometothechatroom! //宏定义,当客户端连接服务端时,想客户发送此欢迎字符串//转换函数,将int类型转换成char*类型voiditoa(inti,char*string){intpower,j;j=i;for(power=1;j>=10;j/=10)power*=10;for(;power>0;power/=10){*string++='0'+i/power;i%=power;}}//得到当前系统时间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);itoa(p_curtime->tm_hour,time_tmp);strcat(time_str,time_tmp);itoa(p_curtime->tm_min,timetmp);strcat(time_str,time_tmp);itoa(p_curtime->tm_sec,timetmp);strcat(time_str,time_tmp);free(time_tmp);}//创建共享存储区key_tshm_create(){key_tshmid;//shmid=shmget(IPC_PRIVATE,1024,PERM);if((shmid=shmget(IPC_PRIVATE,1024,PERM))==-1){ShareMemoryr(errno));exit(1);}returnshmid;}//端口绑定函数 ,创建套接字,并绑定到指定端口intbindPort(unsignedshortintport){intsockfd;structsockaddr_inmy_addr;sockfd=socket(AF_INET,SOCK_STREAM,0);//创建基于流套接口my_addr.sin_family=AF_INET;//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){exit(1);}returnsockfd;}intmain(intargc,char*argv[]){intsockfd,clientfd,sin_size,recvbytes;//定义监听套接字、客户套接字pid_tpid,ppid; //定义父子线程标记变量char*buf,*r_addr,*w_addr,*temp,//定义临时存储区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)//在指定端口上监听{exit(1);}if((clientfd=accept(sockfd,(structsockaddr*)&their_addr,&sin_size))==-1)//接收客户端连接{exit(1);}from:%dsend(clientfd,WELCOME,strlen(WELCOME),0);//发送问候信息buf=(char*)malloc(255);ppid=fork();//创建子进程if(ppid==0){);pid=fork();//创建子进程while(1){if(pid>0){//父进程用于接收信息memset(buf,0,255);//sleep(1);if((recvbytesrecv(clientfd,buf,255,0))<=strcpy(0){perror(close(clientfd);raise(SIGKILL);exit(1);}//writebuf'sdatatosharememoryw_addr=shmat(shmid,0,0);memset(w_addr, 1024);strncpy(w_addr,buf,1024);get_cur_time(time_str);strcat(buf,time_str);%}elseif(pid==0){//子进程用于发送信息sleep(1);r_addr=shmat(shmid,0,0);temp,r_addr);get_cur_time(time_str);strcat(r_addr,time_str);//printf(//if(send(clientfd,buf,strlen(buf),0)==-1)if(send(clientfd,r_addr,strlen(r_addr),0)==-1){per}memset(r_addr, 1024);strcpy(r_addr,temp);}}else}}

}free(buf);close(sockfd);close(clientfd);return0;}if(strcmp(temp,r_addr)!=0){lyr^)ubuntu:Zprintf('r ∖n");free(buf);cl□se(sockfd);close(clIentfd);return0;)lyr⅞ubuntu:-$gccDesktop/five*cDesktop/fi,ve.c:1:18:warning:extratokensatend⅛include<stdio.h>□f"includedirectiveDesktop/fi.ve.c:2:19:warning:extraOinclude<5tdlib*h>tokensðtendofSincludedirectiveDe≡ktop∕fIve.c:3:22:warning:extratokensðtend#includecsys/types.h>〃数据类型定义ADesktop/five.c:4:21:warning:extratokensatend⅛tnclude<sys∕stat*h>ADesktop/five.c:5:23:warning:extratokensðtend⅛tnclude<netiπet∕tn4h>//定义数据结构of"includedirectiveof^includedirectiveof#includedirective4编写客户端收发消息程序#include<stdio.h>#include<netinet/in.h> //定义数据结构sockaddr_in#include<sys/Socket.h> //提供 socket0000000#include<sys/types.h>//数据类型定义#include<string.h>#include<stdlib.h>#include<netdb.h>#include<unistd.h>#include<signal.h>#include<time.h>intmain(intargc,char*argv[]){structSockaddr_inclientaddr;//定义地址结构pid_tpid;intClientfd,sendbytes,recvbytes;//定义客户端套接字structhostent*host;char*buf,*buf_r;if(argc<4){hostportexit(1);}host=gethostbyname(argv[1]);if((clientfd=socket(AF_INET,SOCK_STREAM,0))==-1) //创建客户端套接字{exit(1);}//绑定客户端套接字clientaddr.sin_family=AF_INET;clientaddr.sin_port=htons((uint16_t)atoi(argv[2]));clientaddr.sin_addr=*((structin_addr*)host->h_addr);bzero(&(clientaddr.sin_zero),0);if(connect(clientfd,(structsockaddr*)&clientaddr,sizeof(structddr))==-1)//连接服务端{exit(1);}buf=(char*)malloc(120);sockamemset(buf,0,120);buf_r=(char*)malloc(100);if(recv(clientfd,buf,100,0)==-1){exit(1);}Pid=fork();//创建子进程while(1){if(Pid>0){//父进程用于发送信息//get_cur_time(time_str);strcPy(buf,argv[3]);memset(buf_r,0,100);//gets(buf_r);fgets(buf_r,100,stdin);strncat(buf,buf_r,strlen(buf_r)-1);//strcat(buf,time_str);if

温馨提示

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

评论

0/150

提交评论