版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
2010屆軟件學院
畢業(yè)設計報告書題目: 院系名稱:軟件學院 專業(yè)班級:網(wǎng)絡系統(tǒng)管理0802學生姓名:樊卓豪 學號:200828020206指導教師:譚玉波 教師職稱:副教授 2010年5月25日學習在LINUX下搭建、設置應用服務的運行環(huán)境及系統(tǒng)維護。煅煉學生搜集有關Linux資料,在資料文檔的幫助下,運用Linux的基本知識及常用的操作命令來解決問題的能力。使我們能夠較熟練地掌握:多任務、多用戶操作系統(tǒng)-Linux系統(tǒng)的安裝與配置、用戶管理、文件管理、進程管理、vi的使用、Shell環(huán)境設置、編寫啟動腳本、配制內(nèi)核參數(shù)、X-Window使用、使用SSH、數(shù)據(jù)庫的系統(tǒng)配置及安裝、網(wǎng)絡基礎知識及各種常用網(wǎng)絡通信工具的使用等。關鍵訶:Linux命令Vi編輯器gcc進程控制TOC\o"1-5"\h\z\o"CurrentDocument"第一章Linux命令 1\o"CurrentDocument"Linux操作系統(tǒng)簡介 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調(diào)試 19\o"CurrentDocument"第四章進程控制和通信 21\o"CurrentDocument"4.1進程控制 21\o"CurrentDocument"4.2Linux下進程控制實現(xiàn) 22\o"CurrentDocument"4.3進程通信 24\o"CurrentDocument"Linux下管道通信實現(xiàn) 24結論 26
第一章Linux命令1.1Linux操作系統(tǒng)簡介Linux的起源:UNIX系統(tǒng)的快速發(fā)展,引起了計算機科學家AndrewTanenbaum的強烈好感,為了方便學生更好的了解操作系統(tǒng)的工作原理,他開發(fā)了一個迷你的UNIX,即Minix系統(tǒng)。1991年10月,芬蘭赫爾辛基的學生LinuxsTorvalds在Minix的基礎上開發(fā)了大約一萬行的代碼,將其發(fā)布到comps.os.minix論壇上供大家下載,后來在眾多黑客的開發(fā)下,終于在1994年3月14日發(fā)布了Linux1.0版本。此后Linux各種版本開始流行起來。1999年發(fā)布了Linux中文版本。嚴格的說,Linux不算是一個操作系統(tǒng),只是一個操作系統(tǒng)的內(nèi)核,即計算機軟件與硬件之間通信的平臺;Linux的全稱是GNU/Linux,這才算是一個真正意義上的Linux系統(tǒng)。GNU是RichardStallman組織的一個項目,世界各地的程序員可以編寫GNU程序,同時遵循GPL協(xié)議,允許任何人隨意更改。不過,修改后的程序也要遵守GPL協(xié)議。Linux的特點:完全免費。由于Linux遵循通用的公共許可證GPL,因此任何人有使用、拷貝和修改Linux的自由。高效安全穩(wěn)定。UNIX操作系統(tǒng)的穩(wěn)定性是眾所周知的,Linux繼承了UNIX核心的設計思想,具有執(zhí)行效率高、安全和穩(wěn)定性好的特點。支持多種硬件平臺。Linux能在筆記本電腦、PC機、工作站、甚至大型機上運行,并能在x86、MIPS、PowerPC、SPARC、和Alpha等主流的體系結構上運行。友好的用戶界面。Linux提供了類似Windows圖形界面的X-Windows系統(tǒng),用戶可以使用鼠標方便、直觀、快捷的進行操作。強大的網(wǎng)絡功能。網(wǎng)絡是Linux的生命,完善的網(wǎng)絡支持是Linux與生俱來的能力,所有Linux在通信和網(wǎng)絡功能方面優(yōu)于其他操作系統(tǒng)。支持多任務、多用戶。Linux是多任務、多用戶的操作系統(tǒng),可以支持多個使用者同時使用并共享系統(tǒng)的磁盤、外設和處理器等系統(tǒng)資源。Linux的保護機制使每個應用程序和用戶互不干擾,任何一個任務不崩潰,其他任務仍然正常運行。1.2虛擬機操作流程VmwareWorkstation6是目前比較主流的虛擬機軟件,也是唯一的能在Windows和Linux主機平臺上運行的虛擬計算機軟件。它能真實的模擬物理計算機的所有基本功能,是多平臺學習不可或缺的虛擬軟件。首先,打開VmwareWorkstation6虛擬機軟件,在主界面中選擇RedHadEnterpriseLinux4虛擬計算機系統(tǒng),點擊Commands框架中的“StartthisVirtualmachine"按鈕,運行RedHadEnterpriseLinux4虛擬系統(tǒng)。1.3Linux文件與目錄的基本操作1.3.1文件與文件名Linux的文件名長度可以達到256個字符,但不能使用以下字符做文件名:!@#$%八&*()[]{}'”、/;?空格Linux區(qū)分大小寫ABCAbc不同?文件名中如果有多個小數(shù)點,最右邊的一個為分隔符,表示文件的類型,如.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[選項丨參數(shù)]目錄名⑵ls命令說明:用于顯示指定目錄或文件的相關信息。⑶使用權限:所有用戶。⑷ls命令參數(shù)選項見表1-1。表1-1Is命令參數(shù)選項選項選項功能-a顯示所有文件和目錄,包括隱含文件-l顯示文件的完整信息d表示目錄(directory),如果是一個"-"表示是文件,如果是l則表示是一個連接文件(link)表示文件或者目錄許可權限,分別用可讀(r),可寫(w),可運行(x)。
-F在每個文件名的后面或是前面添加一個特定的后綴字符的方法指出它的類型/:子目錄*:可執(zhí)行文件無:普通文件?開頭:隱含文件-r將文件以反次序顯示(依英文字母順序)-t將文件依建立時間的先后順序列出,后建的排在前面-A同-a,但不列出”當前目錄和“??”父目錄-R若目錄下有文件,則列出其下文件⑸范例:例1:顯示目錄或文件的詳細列表并以創(chuàng)建時間的先后反次序顯示,如圖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參數(shù))例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參數(shù)結果3.mkdir命令⑴mkdir語法:mkdir[選項|參數(shù)]目錄名⑵mkdir命令說明:用于創(chuàng)建目錄。⑶使用權限:所有用戶。⑷mkdir命令參數(shù)選項:-p:確保目錄名稱存在,不存在的話就創(chuàng)建一個。-m:在創(chuàng)建目錄時設置目錄權限。⑸范例:例1:使用自己的學號和姓名各創(chuàng)建一個子目錄,并用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命令創(chuàng)建子目錄例2:創(chuàng)建一個已經(jīng)存在的子目錄,觀察顯示結果,如圖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皿山「:尢法創(chuàng)鋰I]錄^07435124';丈卅:C存征[root?ouia]host、]片■圖1-6創(chuàng)建已存在子目錄結果4.rmdir命令⑴rmdir語法:rmdir[選項|參數(shù)]目錄名⑵rmdir命令說明:用語刪除空的目錄。⑶使用權限:所有用戶。⑷rmdir命令參數(shù)選項:-p:當子目錄被刪除后使它也成為空目錄的話,則順便一并刪除。⑸范例:例1:刪除上例中使用mkdir創(chuàng)建的“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命令參數(shù)表,見表1-2。
參數(shù)選項說 明-a此參數(shù)的效果和同時指定“-dpR”參數(shù)相同-b刪除覆蓋目標文件之前備份,備份文件會在字尾加上一個備份字符串-d當復制符號鏈接時,把目標文件或目錄也建立符號鏈接,并指向與源文件或目錄鏈接的原始文件或目錄-f強行復制文件或目錄不論目標文件或目錄是否存在-i覆蓋既有文件之前先詢問用戶-l對源文件建立硬鏈接,而非復制文件-p保留源文件或目錄的屬性-P保留源文件或目錄的路徑-r遞歸處理,將指定目錄下的文件與子目錄一并處理-R遞歸處理,將指定目錄下的所有文件與子目錄一并處理-s對文件建立符號鏈接,而非復制文件-u使用這項參數(shù)后只會在源文件的更改時間較目標文件更新時或與名稱對應的目標文件并不存在,才復制文件-v顯示命令執(zhí)行過程-x復制文件或目錄存放的文件系統(tǒng),必須與cp命令執(zhí)行時所處文件系統(tǒng)相同,否則不復制(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命令參數(shù)表,見表1-3。參數(shù)選項說 明d直接把欲刪除的目錄的硬鏈接數(shù)據(jù)刪成0,刪除該目錄-f強制刪除文件或目錄,刪除文件或目錄前不在詢問用戶-i刪除既有文件或目錄之前先詢問用戶,此為默認項-r/-R遞歸處理,將指定目錄下的所有文件及子目錄一并處理-v顯示命令執(zhí)行過程⑸范例:例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命令參數(shù)表,見表1-4。表1-4cat命令參數(shù)參數(shù)選項說明-n由1開始對所有輸出的行數(shù)編號-b和-n相似,只不過對于空格行不編號-s當遇上連續(xù)兩行以上空白行時就換成一行空白行⑸范例:例1:顯示文件wen.txt中的內(nèi)容,如圖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顯示文件內(nèi)容more命令⑴more命令語法:more文件名⑵more命令說明:用于分頁顯示指定文件的內(nèi)容。⑶使用權限:所有用戶。⑷范例:例1:逐頁顯示/etc/samba/smb.conf的內(nèi)容,要求一次顯示10行,如圖1-17所示。圖1-17逐頁顯示文件內(nèi)容clear和date命令⑴clear命令說明:用于清屏。⑵date命令說明:顯示系統(tǒng)當前時間。⑶范例:例1:顯示當前系統(tǒng)時間,如圖1-18所示。圖1-18顯示系統(tǒng)時間第二章Vi編輯器Vi編輯器簡介Vi編輯器概述在各種操作系統(tǒng)中,編輯各種文件是必不可少的工作部分。在Linux操作系統(tǒng)中提供了一系列的編輯器供用戶使用,例如Vi、Vim、Emacs、pico、ex、ed等,其中Vim(Vi的增強版)是最常用的編輯器,它是唯一在所有版本的Linux系統(tǒng)和其他各種UNIX系統(tǒng)中都配備的文本編輯器。Vi編輯器的工作模式Vi編輯器有3種工作模式,在每種工作模式下能做不同的操作。⑴命令模式:是進入Vi的默認模式,在此模式下可以對所編輯文檔進行復制、粘貼、刪除、移動光標、繼續(xù)查找等操作,同時它也是末行模式和編輯模式之間進行切換的中轉(zhuǎn)站。⑵末行模式:用于文件的保存、退出、定位光標、查找、替換、設置行標等操作。⑶編輯模式:用于直接編輯文件。(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表示將編輯內(nèi)容寫入文件并退出。這里不退出而進入編輯模式,因為末行模式不能直接進入編輯模式,因此先按下“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進入替換狀態(tài),新增文字會覆蓋原先文字知道按ESC后到命令模式s刪除光標所在字元,并進入輸入模式S刪除光標所在的列,并進入輸入模式第三草Linux下C語言編程3.1gcc簡介1.gcc基本語法gcc[option][filename]表3-1gcc參數(shù)列表選項功能-c對源文件進行預處理、編譯和匯編,產(chǎn)生目標文件,但不進行連接。-0<文件名〉定義輸出的執(zhí)行文件名為<文件名〉-S在編譯后停止,產(chǎn)生類型名為s的匯編代碼文件-E在預處理后停止,輸出預處理后的源代碼至標準輸出,不進行編譯-O對程序進行編譯優(yōu)化,編譯速度比不做優(yōu)化慢且要求內(nèi)存多。-O2比-0優(yōu)化效果更好,但編譯速度較慢-g產(chǎn)生一張用于調(diào)試和排錯的擴展符號表,以便用gdb進行調(diào)試3.2Linux下C語言編程1.編寫程序?qū)崿F(xiàn)如下圖形顯示*******1**1**1**1**1*rTw*1* *1* zT*zT*zT*zT*zT*zT*程序?qū)崿F(xiàn)代碼如下,運行結果如圖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.編寫程序?qū)崿F(xiàn)求三個數(shù)中最大值程序?qū)崿F(xiàn)代碼如下,運行結果如圖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求三個數(shù)中最大值編寫程序?qū)崿F(xiàn)求一維數(shù)組中最大值程序?qū)崿F(xiàn)代碼如下所示,運行結果如圖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求一維數(shù)組中最大值gdb調(diào)試GDB是一個由GNU開源組織發(fā)布的、UNIX/LINUX操作系統(tǒng)下的、基于命令行的、功能強大的程序調(diào)試工具。其基本命令見表3-2。表3-2GDB命令命令說明file<文件名〉加載被調(diào)試的可執(zhí)行程序文件。因為一般都在被調(diào)試程序所在目錄下執(zhí)行GDB,因而文本名不需要帶路徑。rRun的簡寫,運行被調(diào)試的程序。如果此前沒有下過斷點,則執(zhí)行完整個程序;如果有斷點,則程序暫停在第一個可用斷點處。cContinue的簡寫,繼續(xù)執(zhí)行被調(diào)試程序,直至下一個斷點或程序結束b<行號〉b:Breakpoint的簡寫,設置斷點。兩可以使用''行號”“函數(shù)名稱”“執(zhí)行地址”b<函數(shù)名稱〉等方式指定斷點位置。b*<函數(shù)名稱〉其中在函數(shù)名稱前面加“*”符號表示將斷點設置在''由編譯器生成的prolog代碼
b*<代碼地址〉d[編號]處”。如果不了解匯編,可以不予理會此用法。d:Deletebreakpoint的簡寫,刪除指定編號的某個斷點,或刪除所有斷點。斷點編號從1開始遞增。s,nS:執(zhí)行一行源程序代碼,如果此行代碼中有函數(shù)調(diào)用,則進入該函數(shù);n:執(zhí)行一行源程序代碼,此行代碼中的函數(shù)調(diào)用也一并執(zhí)行。s相當于其它調(diào)試器中的“StepInto(單步跟蹤進入)”;n相當于其它調(diào)試器中的“StepOver(單步跟蹤)”。這兩個命令必須在有源代碼調(diào)試信息的情況下才可以使用(GCC編譯時使用“-g”參數(shù))。si,nisi命令類似于s命令,ni命令類似于n命令。所不同的是,這兩個命令(si/ni)所針對的是匯編指令,而s/n針對的是源代碼。p<變量名稱〉Print的簡寫,顯示指定變量(臨時變量或全局變量)的值display...undisplay<編號〉display,設置程序中斷后欲顯示的數(shù)據(jù)及其格式。例如,如果希望每次程序中斷后可以看到即將被執(zhí)行的下一條匯編指令,可以使用命令“display/i$pc”其中$pc代表當前匯編指令,/i表示以十六進行顯示。當需要關心匯編代碼時,此命令相當有用。undispaly,取消先前的display設置,編號從1開始遞增。iInfo的簡寫,用于顯示各類信息,詳情請杳閱“helpi”。-q Quit的簡寫,退出GDB調(diào)試環(huán)境。Linux下使用gdb進行程序調(diào)試(以一個C語言程序為例)。首先使用gcc進行編譯如下:[Root@linuxroot]#gcctt.c-ott-g然后進入gdb,會看到說明,接著加載已經(jīng)編譯過的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調(diào)試程序使用gdb進行調(diào)試可以進行斷點設置,在第21行設置一個斷點(b命令),然后使用r命令進行運行,當程序運行至斷點時程序停止,繼續(xù)運行可以使用c命令,運行過程如圖3-5所示。圖3-5斷點設置第四章進程控制和通信4.1進程控制利用signal和kill實現(xiàn)軟中斷通信kill()系統(tǒng)調(diào)用格式:intkill(pid,sig)參數(shù)定義:intpid,sig;其中,pid是一個或一組進程的標識符,參數(shù)sig是要發(fā)送的軟中斷信號。pid>0時,核心將信號發(fā)送給進程pid。pid=0時,核心將信號發(fā)送給與發(fā)送進程同組的所有進程。pid=-1時,核心將信號發(fā)送給所有用戶標識符真正等于發(fā)送進程的有效用戶標識號的進程。signal()預置對信號的處理方式,允許調(diào)用進程控制軟中斷信號。singal函數(shù)的原型void(*signal(intsigno,void(*func)(int)))(int)這是Linux中的signalinterfacefunction,返回值類型:void(*sig....)系統(tǒng)調(diào)用格式:signal(sig,function)頭文件為:#includevsignal.h>參數(shù)定義:signal(sig,function)intsig;void(*func)()其中sig用于指定信號的類型,sig為0則表示沒有收到任何信號.function:在該進程中的一個函數(shù)地址,在核心返回用戶態(tài)時,它以軟中斷信號的序號作為參數(shù)調(diào)用該函數(shù),對除了信號SIGKILL,SIGTRAP和SIGPWR以外的信號,核心自動地重新設置軟中斷信號處理程序的值為SIG_DFL,—個進程不能捕獲SIGKILL信號。function的解釋如下:function=1時,進程對sig類信號不予理睬,亦即屏蔽了該類信號;function=0時,缺省值,進程在收到sig信號后應終止自己;function為非0,非1類整數(shù)時,function的值即作為信號處理程序的指針。4.2Linux下進程控制實現(xiàn)程序代碼:#include<stdio.h>#include<unistd.h>//alarm函數(shù)頭文件#include<signal.h>intwaite;voidstart(){waite=0;}〃自定義中斷調(diào)用函數(shù)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函數(shù)使用的信號}waiting();kill(pid1,16);〃向child1子進程發(fā)送16號中斷kill(pid2,17);〃向child2子進程發(fā)送17號中斷wait(O);//等待兩個子進程結束wait(O);printf("parentprocessiskilled\n");exit(O);}else{waite=1;signal(17,start);//接受父進程發(fā)送的17號中斷,調(diào)用信號中斷函數(shù)start()waiting();printf("child2iskilled*");exit(0);}}else{waite=1;signal(16,start);//接受父進程發(fā)送的16號中斷,調(diào)用信號中斷函數(shù)start()waiting();printf("child1iskilled*");exit(0);}}運行結果如圖4-1所示。4.3進程通信在計算機系統(tǒng)中,并發(fā)進程之間經(jīng)常要交換一些信息。在并發(fā)進程間用pv操作交換信息實現(xiàn)進程的同步和互斥,以保障安全地共享資源和協(xié)調(diào)地完成任務。因此,把pv操作可看作是進程間的一種通信,但這種方式只交換少量的信息,例如緩沖區(qū)中是否已有物品和是否可以讀文件等,可以把這種通信
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026大唐西藏能源開發(fā)有限公司招聘4人備考題庫完整參考答案詳解
- 2025-2026人教版小學二年級語文上學期測試卷
- 電信副總考試題及答案
- 2025-2026人教版五年級語文期末測試
- 2025 小學六年級科學上冊科學教育中的信息化教學工具熟練使用實例課件
- 新食品衛(wèi)生管理制度
- 鄉(xiāng)村衛(wèi)生站病歷管理制度
- 衛(wèi)生院領導學法制度
- 美容院衛(wèi)生管理六項制度
- 零食店衛(wèi)生制度
- 鋁錠居間合同協(xié)議
- 《隸書千字文》-清席夔
- 2024校長在寒假期末教職工大會上精彩發(fā)言主要引用3個關鍵詞善待自己改變自己提升自己
- 《鐵路技術管理規(guī)程》(普速鐵路部分)
- 2024-2025年度“地球小博士”全國地理科普知識大賽參考試題庫(含答案)
- 北師大版六年級上冊分數(shù)混合運算100題帶答案
- DB32T 4401-2022《綜合醫(yī)院建筑設計標準》
- 2020年高考中考考試工作經(jīng)費項目績效評價報告
- 加拿大鞋類市場銷售通
- 表B. 0 .11工程款支付報審表
- 低蛋白血癥的護理查房知識ppt
評論
0/150
提交評論