Linu操作系统实训报告_第1页
Linu操作系统实训报告_第2页
Linu操作系统实训报告_第3页
Linu操作系统实训报告_第4页
Linu操作系统实训报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

2010届软件学院

毕业设计报告书题目: 院系名称:软件学院 专业班级:网络系统管理0802学生姓名:樊卓豪 学号:200828020206指导教师:谭玉波 教师职称:副教授 2010年5月25日学习在LINUX下搭建、设置应用服务的运行环境及系统维护。煅炼学生搜集有关Linux资料,在资料文档的帮助下,运用Linux的基本知识及常用的操作命令来解决问题的能力。使我们能够较熟练地掌握:多任务、多用户操作系统-Linux系统的安装与配置、用户管理、文件管理、进程管理、vi的使用、Shell环境设置、编写启动脚本、配制内核参数、X-Window使用、使用SSH、数据库的系统配置及安装、网络基础知识及各种常用网络通信工具的使用等。关键诃:Linux命令Vi编辑器gcc进程控制TOC\o"1-5"\h\z\o"CurrentDocument"第一章Linux命令 1\o"CurrentDocument"Linux操作系统简介 1\o"CurrentDocument"1.2虚拟机操作流程 2\o"CurrentDocument"1.3Linux文件与目录的基本操作 2\o"CurrentDocument"第二章Vi编辑器 12\o"CurrentDocument"Vi编辑器简介 12\o"CurrentDocument"Vi编辑器操作 13\o"CurrentDocument"第三章Linux下C语言编程 16\o"CurrentDocument"gcc简介 16\o"CurrentDocument"Linux下C语言编程 17\o"CurrentDocument"gdb调试 19\o"CurrentDocument"第四章进程控制和通信 21\o"CurrentDocument"4.1进程控制 21\o"CurrentDocument"4.2Linux下进程控制实现 22\o"CurrentDocument"4.3进程通信 24\o"CurrentDocument"Linux下管道通信实现 24结论 26

第一章Linux命令1.1Linux操作系统简介Linux的起源:UNIX系统的快速发展,引起了计算机科学家AndrewTanenbaum的强烈好感,为了方便学生更好的了解操作系统的工作原理,他开发了一个迷你的UNIX,即Minix系统。1991年10月,芬兰赫尔辛基的学生LinuxsTorvalds在Minix的基础上开发了大约一万行的代码,将其发布到comps.os.minix论坛上供大家下载,后来在众多黑客的开发下,终于在1994年3月14日发布了Linux1.0版本。此后Linux各种版本开始流行起来。1999年发布了Linux中文版本。严格的说,Linux不算是一个操作系统,只是一个操作系统的内核,即计算机软件与硬件之间通信的平台;Linux的全称是GNU/Linux,这才算是一个真正意义上的Linux系统。GNU是RichardStallman组织的一个项目,世界各地的程序员可以编写GNU程序,同时遵循GPL协议,允许任何人随意更改。不过,修改后的程序也要遵守GPL协议。Linux的特点:完全免费。由于Linux遵循通用的公共许可证GPL,因此任何人有使用、拷贝和修改Linux的自由。高效安全稳定。UNIX操作系统的稳定性是众所周知的,Linux继承了UNIX核心的设计思想,具有执行效率高、安全和稳定性好的特点。支持多种硬件平台。Linux能在笔记本电脑、PC机、工作站、甚至大型机上运行,并能在x86、MIPS、PowerPC、SPARC、和Alpha等主流的体系结构上运行。友好的用户界面。Linux提供了类似Windows图形界面的X-Windows系统,用户可以使用鼠标方便、直观、快捷的进行操作。强大的网络功能。网络是Linux的生命,完善的网络支持是Linux与生俱来的能力,所有Linux在通信和网络功能方面优于其他操作系统。支持多任务、多用户。Linux是多任务、多用户的操作系统,可以支持多个使用者同时使用并共享系统的磁盘、外设和处理器等系统资源。Linux的保护机制使每个应用程序和用户互不干扰,任何一个任务不崩溃,其他任务仍然正常运行。1.2虚拟机操作流程VmwareWorkstation6是目前比较主流的虚拟机软件,也是唯一的能在Windows和Linux主机平台上运行的虚拟计算机软件。它能真实的模拟物理计算机的所有基本功能,是多平台学习不可或缺的虚拟软件。首先,打开VmwareWorkstation6虚拟机软件,在主界面中选择RedHadEnterpriseLinux4虚拟计算机系统,点击Commands框架中的“StartthisVirtualmachine"按钮,运行RedHadEnterpriseLinux4虚拟系统。1.3Linux文件与目录的基本操作1.3.1文件与文件名Linux的文件名长度可以达到256个字符,但不能使用以下字符做文件名:!@#$%八&*()[]{}'”、/;◊空格Linux区分大小写ABCAbc不同•文件名中如果有多个小数点,最右边的一个为分隔符,表示文件的类型,如.txt,.c1.3.2目录“/”为根目录、目录分隔符和目录与文件的分隔符。如:/home/feng/11.txt。1.3.3文件与目录的常用命令1.man命令⑴man语法:man命令符⑵man命令说明:对你熟悉或不熟悉的命令提供帮助解释(按空格键显示下一页,按b键返回,按q键退出)。⑶使用权限:所有用户。⑷范例:例1:显示vi命令的帮助解释,如图1-1所示。[Root@linuxroot]#manviVI(P)VI(P)VI(P)vi-screen-ariented(visua])disp]ayeditorSYMTSISvi[-rR][-cconmand][-ttagstrjng][-wsize][file…*]CESQllPTia^lThisutilitysha]]beprovidedansystentthatbothsupporttheUserPortabilityUtilitiesoptionanddefinethePCB1X2CHARTERMsynbol.Chathersystemsitisoptional.Thev_j_(visual)utilityisascreen-orientedtexteditor.Chlytheopenandvisua]nodesoftheeditoraredeseribedinIEEEStd1(X)3.1-2001:seethe]ineeditor空foradditiana]editingcapabilitiesusedinv±.Theusercanswitchbackandforthbetv^eenviandexandexecute竺connnndsfromwithinvi.Vi2.Is命令⑴ls语法:ls[选项丨参数]目录名⑵ls命令说明:用于显示指定目录或文件的相关信息。⑶使用权限:所有用户。⑷ls命令参数选项见表1-1。表1-1Is命令参数选项选项选项功能-a显示所有文件和目录,包括隐含文件-l显示文件的完整信息d表示目录(directory),如果是一个"-"表示是文件,如果是l则表示是一个连接文件(link)表示文件或者目录许可权限,分别用可读(r),可写(w),可运行(x)。

-F在每个文件名的后面或是前面添加一个特定的后缀字符的方法指出它的类型/:子目录*:可执行文件无:普通文件•开头:隐含文件-r将文件以反次序显示(依英文字母顺序)-t将文件依建立时间的先后顺序列出,后建的排在前面-A同-a,但不列出”当前目录和“••”父目录-R若目录下有文件,则列出其下文件⑸范例:例1:显示目录或文件的详细列表并以创建时间的先后反次序显示,如图1-2所示。[root@localhost'"■]#Is--Jtr2k-rw-r——r—— 1rootroot329492008-03-05install•log.syslog-rv^r一一r—— 1rootroot502442008-03-05instalI-Jog-rv^r——r—— 1rootroot06月2309::22init.txt[root@loca]host'"■]#|图1-2显示列表例2:显示目录(子目录不为空时显示子目录)详细列表,如图1-3所示。rootroot1ltS2rootroot409tSrootroot0rootroot50244总用量IM-rw-r——r——drwxr-xr-x-rw-r——r——-rw-r——r——总用量IM-rw-r——r——drwxr-xr-x-rw-r——r——-rw-r——r——-rw-r一一r一一12111rootroot32949anacanda-ks.cfg的]23()9:24DesktopE月2309:22init.txt2008-03-05instal1.log2008-03-05instal1.log.syslog./Desktop:总用量4-rw- 1rootroot0 &J]23()9:24盘周洋.txt[root@1ocaIhost]#图1-3显示详细列表(R参数)例3:显示所有文件和目录,包括隐含文件但不列出“.”当前目录和“..”父目录,在每个文件名的后面或是前面添加一个特定的后缀字符的方法指出它的类型,如图1-4所示。

[root@localhost"]#ls-AFanaconda-ks.cfgDesktop/.gnome2 ivate/instal1.1og.syslog.bash_history.dlTTC.gstreamer-0.8/.metacity/.bash_logout.eggcups/.gtkrc.nautilus/.bash_profi1e.geonf/.gtkrc-1.2-gnome2.recent1y-used.bashrc.gconfd/.ICEauthority.rhn-applet.conf.config/.gnome/init.txt.teshre.cshrc.gnome2/instal1.Jog.Xauthority[root@localhost图1-4AF参数结果3.mkdir命令⑴mkdir语法:mkdir[选项|参数]目录名⑵mkdir命令说明:用于创建目录。⑶使用权限:所有用户。⑷mkdir命令参数选项:-p:确保目录名称存在,不存在的话就创建一个。-m:在创建目录时设置目录权限。⑸范例:例1:使用自己的学号和姓名各创建一个子目录,并用ls命令观察结果,如图1-5所示。nidir2CC7435124nidir2CC7435124Fnkilir温周洋“冲Is-I[raat®acaIhustdrv.wr-xrX2rootroot40962JJ515:242CC743b124-rvrr——「—1rootroot11622008-03-05□naconda-kgcF#drwr-xrX2rootroot40962008-03-05Dt?sktup-vw-v——r一1rootroot502442008-03-05iii^ta]L1ogr_「w-「——「—1rootroot32949200B-03-05insta]1.1of.wyw]ofdrwr-xrX2rootroot40962JJ515:24温周洋[root®acaIhowt总川:*132图1-5使用mkdir命令创建子目录例2:创建一个已经存在的子目录,观察显示结果,如图1-6所示。

[root®acaIhost、]片1s-I£川吐132dr^T-XTX2routruut40962JJ515:242007435124-vw-t一r—1rootroot1\G22008-03-05□naconda-ks.cfgdr^wT-xrX2rootroot40962008-03-05Dt?sktup-vw-t―r—1rootroot5U244200E-03-05i]ista1L1o|r-rvk*-?―t—1routruut329492008-03-05i]mta11.1of.sys]oerdr^T-XT-x2routruut40962JJ515:24温周洋[root®acaIhost、]算nckdir2CC7435124皿山「:尢法创锂I]录^07435124';丈卅:C存征[root®ouia]host、]片■图1-6创建已存在子目录结果4.rmdir命令⑴rmdir语法:rmdir[选项|参数]目录名⑵rmdir命令说明:用语删除空的目录。⑶使用权限:所有用户。⑷rmdir命令参数选项:-p:当子目录被删除后使它也成为空目录的话,则顺便一并删除。⑸范例:例1:删除上例中使用mkdir创建的“2007435124”和“温周洋”子目录,并使用ls命令观察结果,如图1-7所示。图1-7使用rmdir删除子目录例2:使用rmdir删除一个不存在的目录,并观察结果,如图1-8所示。图1-8使用rmdir命令删除不存在目录结果⑴cd语法:cd目录名⑵命令说明:用语更改当前目录。⑶使用权限:所有用户。⑷范例:例1:使用cd命令进入“07124”目录(已存在)和“07142”目录(不存在),并观察结果,如图1-9所示。图1-9更改当前目录6.pwd命令⑴pwd语法:pwd⑵命令说明:显示当前用户所在工作组目录位置。⑶使用权限:所有用户。⑷范例:例1:显示当前用户所在工作组目录,如图1-10所示。[root®ocaIhost pv>d/root/ntsktop[rout酗oc日]h”t图1-10显示当前目录7.cp命令⑴cp语法:cp[选项|源文件或目录][目标文件或目录][目的目录]⑵命令说明:复制文件或目录。⑶使用权限:所有用户。⑷cp命令参数表,见表1-2。

参数选项说 明-a此参数的效果和同时指定“-dpR”参数相同-b删除覆盖目标文件之前备份,备份文件会在字尾加上一个备份字符串-d当复制符号链接时,把目标文件或目录也建立符号链接,并指向与源文件或目录链接的原始文件或目录-f强行复制文件或目录不论目标文件或目录是否存在-i覆盖既有文件之前先询问用户-l对源文件建立硬链接,而非复制文件-p保留源文件或目录的属性-P保留源文件或目录的路径-r递归处理,将指定目录下的文件与子目录一并处理-R递归处理,将指定目录下的所有文件与子目录一并处理-s对文件建立符号链接,而非复制文件-u使用这项参数后只会在源文件的更改时间较目标文件更新时或与名称对应的目标文件并不存在,才复制文件-v显示命令执行过程-x复制文件或目录存放的文件系统,必须与cp命令执行时所处文件系统相同,否则不复制(5)范例:例1:复制/root/2007435124/下的所有以24开头的文件到/home/温周洋目录下,如图1-11所示。[root®!aca[root®!oca[[root®!aca[root®!oca[rout®oca[root®!aca总川呈32-rw(r—xr—k-rw<r—xr-y-rwr—r—[rout®ocalhasicp2U1J743b124/24*]ho£i、]#cd/】ho£i/Iffcdhnnfif温周洋]hasIjU.I'd洋]#I£-IIrooirooiI228tiIrooirooi6C79Ipoolrooi 0lh<m温周洋]1333月月月66621):3724S120:3724.c2(1:3724.ixt图1-11复制所有以24开头的对象8.rm命令⑴rm语法:rm[选项][文件或目录...]⑵rm命令说明:删除文件或目录。⑶使用权限:所有用户。⑷rm命令参数表,见表1-3。参数选项说 明d直接把欲删除的目录的硬链接数据删成0,删除该目录-f强制删除文件或目录,删除文件或目录前不在询问用户-i删除既有文件或目录之前先询问用户,此为默认项-r/-R递归处理,将指定目录下的所有文件及子目录一并处理-v显示命令执行过程⑸范例:例1:直接删除/root/2007435124/24.c文件,删除前不询问用户,如图1-12所示。图1-12删除文件例2:删除/root/2007435124下的wen.txt文件和24子目录,删除前询问用户,如图1-13所示。[rooi^localhost2U0743b124](t】呂123tc-24 2451Lu24“tx1v«n.txt[rooi^loca]ho£t2C0743b124]Jtrm-r24txirnt是習删除丨丨录54'?yrnt是習删際一般丈件屆mtxi'?y[rooi@loca]host2007435124]ff】w123.c2451.0 24.i:y1[rcci@loca]ho£t2007435124]ff图1-13删除特定文件和目录9.mv命令⑴mv语法:mv[文件1或目录1][文件2或目录2]⑵mv命令说明:移动文件或修改文件名。⑶使用权限:所有用户。⑷范例:例1:修改/root/2007435124目录下的文件24.txt为wen.txt,如图1-14所示。

图1-14修改文件名例2:移动/root/2007435124目录下的wen.txt文件到/root/下,如图1-15所示。图1-15移动文件cat命令⑴cat命令语法:cat[选项]文件名⑵cat命令说明:用于显示特定文件到标准输出设备或另一个文件中。⑶使用权限:所有用户。⑷cat命令参数表,见表1-4。表1-4cat命令参数参数选项说明-n由1开始对所有输出的行数编号-b和-n相似,只不过对于空格行不编号-s当遇上连续两行以上空白行时就换成一行空白行⑸范例:例1:显示文件wen.txt中的内容,如图1-16所示。[root®uca]hosi算]s2007435124anaconda-kstcI'gri]isia]1L]ugr vtn.txi23. Itesktup i]mia]1Llugr.sys]ugr[root®oca]hosicaivtrrixiAbumHE:Ladyeandggnte]nun:Givent;you□teniionhTnrnanti£VfenZhonyan^,]thFromchina.MrnantsQiinesei轴.周洋."[root⑥ocnIhus'i图1-16显示文件内容more命令⑴more命令语法:more文件名⑵more命令说明:用于分页显示指定文件的内容。⑶使用权限:所有用户。⑷范例:例1:逐页显示/etc/samba/smb.conf的内容,要求一次显示10行,如图1-17所示。图1-17逐页显示文件内容clear和date命令⑴clear命令说明:用于清屏。⑵date命令说明:显示系统当前时间。⑶范例:例1:显示当前系统时间,如图1-18所示。图1-18显示系统时间第二章Vi编辑器Vi编辑器简介Vi编辑器概述在各种操作系统中,编辑各种文件是必不可少的工作部分。在Linux操作系统中提供了一系列的编辑器供用户使用,例如Vi、Vim、Emacs、pico、ex、ed等,其中Vim(Vi的增强版)是最常用的编辑器,它是唯一在所有版本的Linux系统和其他各种UNIX系统中都配备的文本编辑器。Vi编辑器的工作模式Vi编辑器有3种工作模式,在每种工作模式下能做不同的操作。⑴命令模式:是进入Vi的默认模式,在此模式下可以对所编辑文档进行复制、粘贴、删除、移动光标、继续查找等操作,同时它也是末行模式和编辑模式之间进行切换的中转站。⑵末行模式:用于文件的保存、退出、定位光标、查找、替换、设置行标等操作。⑶编辑模式:用于直接编辑文件。(4)三种模式之间的切换方法如图2-1所示。从图2-1中可以看到,编辑模式和末行模式之间不能直接切换,必须通过命令模式进行过度。图2-1工作模式切换模式图Vi编辑器操作2.2.1Vi编辑器的启动可以使用简单的命令来启动Vim文本编辑器,通常可直接指定需要编辑的文件路径,即使需要编辑的是一个原本不存在的新文件。一般命令如下所示:[Root@linuxroot]#vim文件名2.2.2三种模式的操作进入Vi后,首先会看到如图2-2所示的界面:图2-2Vi主界面(命令模式)图2-2所示的界面即为命令模式的界面,在这个界面下按下“:”键就可以进入如图2-3所示的末行模式,所谓“末行模式”就是在编辑器的最后一行进行输入。末行命令wq表示将编辑内容写入文件并退出。这里不退出而进入编辑模式,因为末行模式不能直接进入编辑模式,因此先按下“Esc”键退回命令模式,在命令模式下按“insert”进入如图2-4所示的编辑模式,在编辑模式下可以输入文本。图2-3末行模式图2-4编辑模式2.2.3命令末行模式命令在末行模式下可以输入末行命令,常用的末行命令见表2-1。表2-1末行模式命令:wpath/filename保存文件:n,mwpath/filename保存指定范围文档(n表示开始行,m表示结束行):q!对文件修改后,不保存强制退出。:q没有对文件做过修改,退出:wq或:x保存退出rpath/filename读取文件setnu打开行标setnonu关闭行标/char正向查找字符?char反向查找字符命令模式命令

在命令模式下,也可以使用大量的命令对文件进行编辑等操作,常用的命令模式命令见表2-2。表4-2命令模式命令a从光标所在位置后面新增文字,光标后的文字随新增文字向后移动A从光标所在列最后面的地方开始新增文字i从光标所在位置前面开始插入文字,光标后的文字随新增文字移动<可用insert键〉I从光标所在列的第一个非空白字符前面开始插入文字o在光标所在列下新增一列并进入输入模式O在光标所在列上方新增一列并进入输入模式x删除光标所在字符<也可以用Delete键〉dd删除光标所在行r修改光标所在字符,r后接要修改的字符R进入替换状态,新增文字会覆盖原先文字知道按ESC后到命令模式s删除光标所在字元,并进入输入模式S删除光标所在的列,并进入输入模式第三草Linux下C语言编程3.1gcc简介1.gcc基本语法gcc[option][filename]表3-1gcc参数列表选项功能-c对源文件进行预处理、编译和汇编,产生目标文件,但不进行连接。-0<文件名〉定义输出的执行文件名为<文件名〉-S在编译后停止,产生类型名为s的汇编代码文件-E在预处理后停止,输出预处理后的源代码至标准输出,不进行编译-O对程序进行编译优化,编译速度比不做优化慢且要求内存多。-O2比-0优化效果更好,但编译速度较慢-g产生一张用于调试和排错的扩展符号表,以便用gdb进行调试3.2Linux下C语言编程1.编写程序实现如下图形显示*******1**1**1**1**1*rTw*1* *1* zT*zT*zT*zT*zT*zT*程序实现代码如下,运行结果如图3-1所示。#includevstdio.h>main(){inti,j,k;for(i=0;iv5;i++){for(k=0;kv4-i;k++)printf(”");for(j=0;jv=i;j++)printf(”*");printf("\n");}}图3-1金字塔图形2.编写程序实现求三个数中最大值程序实现代码如下,运行结果如图3-2所示。#includevstdio.h>intmax(intx,inty,intz){intmax;max=x;if(maxvy)max=y;if(maxvz)max=z;returnmax;}main(){inti,j,k,l;printf("pleaseinputthreenumbers:\n");scanf(”%d%d%d",&i,&j,&k);l=max(i,j,k);printf("Themaxnumberis:%d\n",l);}图3-2求三个数中最大值编写程序实现求一维数组中最大值程序实现代码如下所示,运行结果如图3-3所示。#includevstdio.h>#includevstdlib.h>#includevtime.h>main(){intarray[10];inti,max;time_tt;srand((unsigned)time(&t));for(i=0;ivl0;i++){array[i]=rand()%100;}printf("Thearrayare:\n");for(i=0;ivl0;i++){printf(”%2d”,array[i]);if((i+1)%5==0)printf("\n");}max=array[0];for(i=0;iv10;i++){if(max<array[i])max=array[i];}printf("Themaxnumberis:%d\n",max);}图3-3求一维数组中最大值gdb调试GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。其基本命令见表3-2。表3-2GDB命令命令说明file<文件名〉加载被调试的可执行程序文件。因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。rRun的简写,运行被调试的程序。如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。cContinue的简写,继续执行被调试程序,直至下一个断点或程序结束b<行号〉b:Breakpoint的简写,设置断点。两可以使用''行号”“函数名称”“执行地址”b<函数名称〉等方式指定断点位置。b*<函数名称〉其中在函数名称前面加“*”符号表示将断点设置在''由编译器生成的prolog代码

b*<代码地址〉d[编号]处”。如果不了解汇编,可以不予理会此用法。d:Deletebreakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。s,nS:执行一行源程序代码,如果此行代码中有函数调用,则进入该函数;n:执行一行源程序代码,此行代码中的函数调用也一并执行。s相当于其它调试器中的“StepInto(单步跟踪进入)”;n相当于其它调试器中的“StepOver(单步跟踪)”。这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。si,nisi命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。p<变量名称〉Print的简写,显示指定变量(临时变量或全局变量)的值display...undisplay<编号〉display,设置程序中断后欲显示的数据及其格式。例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令“display/i$pc”其中$pc代表当前汇编指令,/i表示以十六进行显示。当需要关心汇编代码时,此命令相当有用。undispaly,取消先前的display设置,编号从1开始递增。iInfo的简写,用于显示各类信息,详情请杳阅“helpi”。-q Quit的简写,退出GDB调试环境。Linux下使用gdb进行程序调试(以一个C语言程序为例)。首先使用gcc进行编译如下:[Root@linuxroot]#gcctt.c-ott-g然后进入gdb,会看到说明,接着加载已经编译过的C文件,加载成功后使用r命令运行结果如图3-4所示。[root®!acaIhosiFfesktup]#i^ccii.c-oii[root®ocaIhosiObBktap]ffpdbGMUgdbRed用1Linux(6.3.C.0-I.l32.EL4rh)Capyri12CC4FreeSufTwareFound□iiontInc.QBisfreesoftwarehcoveredbyiheQMUGenera]PublicLicensehandyouarevt]conetochangeiiand/ordisiributecopiesol'i1undercertaincondiiions.TypeMshowcopying1'toseethecondiiions.ThereisabsolutelyncwirrantyforGUkTypershowwitrantymfordetaiIs.UlisGIB佃wconfigiiredas"i38U-redh□t-Iimix-gmn".(gdb)fiI.eiiRendingsynijo]£from/root/IXskicp/iitL.done.UsinerhoslIibthread_dbIibrary'7lib/tls/]ibthread_db.se.I'\(i?db)rStariin^rpro^ram/root^Dtskiop/iiHie□rr□>rare;21912338II096428459Hiermxnurrberisz96Pro|rrarnexitedwithcode1J25.图3-4gdb调试程序使用gdb进行调试可以进行断点设置,在第21行设置一个断点(b命令),然后使用r命令进行运行,当程序运行至断点时程序停止,继续运行可以使用c命令,运行过程如图3-5所示。图3-5断点设置第四章进程控制和通信4.1进程控制利用signal和kill实现软中断通信kill()系统调用格式:intkill(pid,sig)参数定义:intpid,sig;其中,pid是一个或一组进程的标识符,参数sig是要发送的软中断信号。pid>0时,核心将信号发送给进程pid。pid=0时,核心将信号发送给与发送进程同组的所有进程。pid=-1时,核心将信号发送给所有用户标识符真正等于发送进程的有效用户标识号的进程。signal()预置对信号的处理方式,允许调用进程控制软中断信号。singal函数的原型void(*signal(intsigno,void(*func)(int)))(int)这是Linux中的signalinterfacefunction,返回值类型:void(*sig....)系统调用格式:signal(sig,function)头文件为:#includevsignal.h>参数定义:signal(sig,function)intsig;void(*func)()其中sig用于指定信号的类型,sig为0则表示没有收到任何信号.function:在该进程中的一个函数地址,在核心返回用户态时,它以软中断信号的序号作为参数调用该函数,对除了信号SIGKILL,SIGTRAP和SIGPWR以外的信号,核心自动地重新设置软中断信号处理程序的值为SIG_DFL,—个进程不能捕获SIGKILL信号。function的解释如下:function=1时,进程对sig类信号不予理睬,亦即屏蔽了该类信号;function=0时,缺省值,进程在收到sig信号后应终止自己;function为非0,非1类整数时,function的值即作为信号处理程序的指针。4.2Linux下进程控制实现程序代码:#include<stdio.h>#include<unistd.h>//alarm函数头文件#include<signal.h>intwaite;voidstart(){waite=0;}〃自定义中断调用函数staticvoidwaiting(){while(waite==1);}main(){intpidl,pid2;if(pidl>0){printf("chilldprocess1is%d\n",pid1);while((pid2=fork())==-1);if(pid2>0){printf("childprocess2is%d\n",pid2);printf("pleasepress'delete'\n");waite=1;if(signal(SIGUSR1,start)==SIG_ERR);else{alarm(5);signal(SIGALRM,start);//alarm函数使用的信号}waiting();kill(pid1,16);〃向child1子进程发送16号中断kill(pid2,17);〃向child2子进程发送17号中断wait(O);//等待两个子进程结束wait(O);printf("parentprocessiskilled\n");exit(O);}else{waite=1;signal(17,start);//接受父进程发送的17号中断,调用信号中断函数start()waiting();printf("child2iskilled*");exit(0);}}else{waite=1;signal(16,start);//接受父进程发送的16号中断,调用信号中断函数start()waiting();printf("child1iskilled*");exit(0);}}运行结果如图4-1所示。4.3进程通信在计算机系统中,并发进程之间经常要交换一些信息。在并发进程间用pv操作交换信息实现进程的同步和互斥,以保障安全地共享资源和协调地完成任务。因此,把pv操作可看作是进程间的一种通信,但这种方式只交换少量的信息,例如缓冲区中是否已有物品和是否可以读文件等,可以把这种通信

温馨提示

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

评论

0/150

提交评论