版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2010屆軟件學(xué)院
畢業(yè)設(shè)計(jì)報(bào)告書(shū)題目: 院系名稱:軟件學(xué)院 專業(yè)班級(jí):網(wǎng)絡(luò)系統(tǒng)管理0802學(xué)生姓名:樊卓豪 學(xué)號(hào):200828020206指導(dǎo)教師:譚玉波 教師職稱:副教授 2010年5月25日學(xué)習(xí)在LINUX下搭建、設(shè)置應(yīng)用服務(wù)的運(yùn)行環(huán)境及系統(tǒng)維護(hù)。煅煉學(xué)生搜集有關(guān)Linux資料,在資料文檔的幫助下,運(yùn)用Linux的基本知識(shí)及常用的操作命令來(lái)解決問(wèn)題的能力。使我們能夠較熟練地掌握:多任務(wù)、多用戶操作系統(tǒng)-Linux系統(tǒng)的安裝與配置、用戶管理、文件管理、進(jìn)程管理、vi的使用、Shell環(huán)境設(shè)置、編寫(xiě)啟動(dòng)腳本、配制內(nèi)核參數(shù)、X-Window使用、使用SSH、數(shù)據(jù)庫(kù)的系統(tǒng)配置及安裝、網(wǎng)絡(luò)基礎(chǔ)知識(shí)及各種常用網(wǎng)絡(luò)通信工具的使用等。關(guān)鍵訶:Linux命令Vi編輯器gcc進(jìn)程控制TOC\o"1-5"\h\z\o"CurrentDocument"第一章Linux命令 1\o"CurrentDocument"Linux操作系統(tǒng)簡(jiǎn)介 1\o"CurrentDocument"1.2虛擬機(jī)操作流程 2\o"CurrentDocument"1.3Linux文件與目錄的基本操作 2\o"CurrentDocument"第二章Vi編輯器 12\o"CurrentDocument"Vi編輯器簡(jiǎn)介 12\o"CurrentDocument"Vi編輯器操作 13\o"CurrentDocument"第三章Linux下C語(yǔ)言編程 16\o"CurrentDocument"gcc簡(jiǎn)介 16\o"CurrentDocument"Linux下C語(yǔ)言編程 17\o"CurrentDocument"gdb調(diào)試 19\o"CurrentDocument"第四章進(jìn)程控制和通信 21\o"CurrentDocument"4.1進(jìn)程控制 21\o"CurrentDocument"4.2Linux下進(jìn)程控制實(shí)現(xiàn) 22\o"CurrentDocument"4.3進(jìn)程通信 24\o"CurrentDocument"Linux下管道通信實(shí)現(xiàn) 24結(jié)論 26
第一章Linux命令1.1Linux操作系統(tǒng)簡(jiǎn)介L(zhǎng)inux的起源:UNIX系統(tǒng)的快速發(fā)展,引起了計(jì)算機(jī)科學(xué)家AndrewTanenbaum的強(qiáng)烈好感,為了方便學(xué)生更好的了解操作系統(tǒng)的工作原理,他開(kāi)發(fā)了一個(gè)迷你的UNIX,即Minix系統(tǒng)。1991年10月,芬蘭赫爾辛基的學(xué)生LinuxsTorvalds在Minix的基礎(chǔ)上開(kāi)發(fā)了大約一萬(wàn)行的代碼,將其發(fā)布到comps.os.minix論壇上供大家下載,后來(lái)在眾多黑客的開(kāi)發(fā)下,終于在1994年3月14日發(fā)布了Linux1.0版本。此后Linux各種版本開(kāi)始流行起來(lái)。1999年發(fā)布了Linux中文版本。嚴(yán)格的說(shuō),Linux不算是一個(gè)操作系統(tǒng),只是一個(gè)操作系統(tǒng)的內(nèi)核,即計(jì)算機(jī)軟件與硬件之間通信的平臺(tái);Linux的全稱是GNU/Linux,這才算是一個(gè)真正意義上的Linux系統(tǒng)。GNU是RichardStallman組織的一個(gè)項(xiàng)目,世界各地的程序員可以編寫(xiě)GNU程序,同時(shí)遵循GPL協(xié)議,允許任何人隨意更改。不過(guò),修改后的程序也要遵守GPL協(xié)議。Linux的特點(diǎn):完全免費(fèi)。由于Linux遵循通用的公共許可證GPL,因此任何人有使用、拷貝和修改Linux的自由。高效安全穩(wěn)定。UNIX操作系統(tǒng)的穩(wěn)定性是眾所周知的,Linux繼承了UNIX核心的設(shè)計(jì)思想,具有執(zhí)行效率高、安全和穩(wěn)定性好的特點(diǎn)。支持多種硬件平臺(tái)。Linux能在筆記本電腦、PC機(jī)、工作站、甚至大型機(jī)上運(yùn)行,并能在x86、MIPS、PowerPC、SPARC、和Alpha等主流的體系結(jié)構(gòu)上運(yùn)行。友好的用戶界面。Linux提供了類似Windows圖形界面的X-Windows系統(tǒng),用戶可以使用鼠標(biāo)方便、直觀、快捷的進(jìn)行操作。強(qiáng)大的網(wǎng)絡(luò)功能。網(wǎng)絡(luò)是Linux的生命,完善的網(wǎng)絡(luò)支持是Linux與生俱來(lái)的能力,所有Linux在通信和網(wǎng)絡(luò)功能方面優(yōu)于其他操作系統(tǒng)。支持多任務(wù)、多用戶。Linux是多任務(wù)、多用戶的操作系統(tǒng),可以支持多個(gè)使用者同時(shí)使用并共享系統(tǒng)的磁盤(pán)、外設(shè)和處理器等系統(tǒng)資源。Linux的保護(hù)機(jī)制使每個(gè)應(yīng)用程序和用戶互不干擾,任何一個(gè)任務(wù)不崩潰,其他任務(wù)仍然正常運(yùn)行。1.2虛擬機(jī)操作流程VmwareWorkstation6是目前比較主流的虛擬機(jī)軟件,也是唯一的能在Windows和Linux主機(jī)平臺(tái)上運(yùn)行的虛擬計(jì)算機(jī)軟件。它能真實(shí)的模擬物理計(jì)算機(jī)的所有基本功能,是多平臺(tái)學(xué)習(xí)不可或缺的虛擬軟件。首先,打開(kāi)VmwareWorkstation6虛擬機(jī)軟件,在主界面中選擇RedHadEnterpriseLinux4虛擬計(jì)算機(jī)系統(tǒng),點(diǎn)擊Commands框架中的“StartthisVirtualmachine"按鈕,運(yùn)行RedHadEnterpriseLinux4虛擬系統(tǒng)。1.3Linux文件與目錄的基本操作1.3.1文件與文件名Linux的文件名長(zhǎng)度可以達(dá)到256個(gè)字符,但不能使用以下字符做文件名:!@#$%八&*()[]{}'”、/;?空格Linux區(qū)分大小寫(xiě)ABCAbc不同?文件名中如果有多個(gè)小數(shù)點(diǎn),最右邊的一個(gè)為分隔符,表示文件的類型,如.txt,.c1.3.2目錄“/”為根目錄、目錄分隔符和目錄與文件的分隔符。如:/home/feng/11.txt。1.3.3文件與目錄的常用命令1.man命令⑴man語(yǔ)法:man命令符⑵man命令說(shuō)明:對(duì)你熟悉或不熟悉的命令提供幫助解釋(按空格鍵顯示下一頁(yè),按b鍵返回,按q鍵退出)。⑶使用權(quán)限:所有用戶。⑷范例:例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空f(shuō)oradditiana]editingcapabilitiesusedinv±.Theusercanswitchbackandforthbetv^eenviandexandexecute竺connnndsfromwithinvi.Vi2.Is命令⑴ls語(yǔ)法:ls[選項(xiàng)丨參數(shù)]目錄名⑵ls命令說(shuō)明:用于顯示指定目錄或文件的相關(guān)信息。⑶使用權(quán)限:所有用戶。⑷ls命令參數(shù)選項(xiàng)見(jiàn)表1-1。表1-1Is命令參數(shù)選項(xiàng)選項(xiàng)選項(xiàng)功能-a顯示所有文件和目錄,包括隱含文件-l顯示文件的完整信息d表示目錄(directory),如果是一個(gè)"-"表示是文件,如果是l則表示是一個(gè)連接文件(link)表示文件或者目錄許可權(quán)限,分別用可讀(r),可寫(xiě)(w),可運(yùn)行(x)。
-F在每個(gè)文件名的后面或是前面添加一個(gè)特定的后綴字符的方法指出它的類型/:子目錄*:可執(zhí)行文件無(wú):普通文件?開(kāi)頭:隱含文件-r將文件以反次序顯示(依英文字母順序)-t將文件依建立時(shí)間的先后順序列出,后建的排在前面-A同-a,但不列出”當(dāng)前目錄和“??”父目錄-R若目錄下有文件,則列出其下文件⑸范例:例1:顯示目錄或文件的詳細(xì)列表并以創(chuàng)建時(shí)間的先后反次序顯示,如圖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:顯示目錄(子目錄不為空時(shí)顯示子目錄)詳細(xì)列表,如圖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盤(pán)周洋.txt[root@1ocaIhost]#圖1-3顯示詳細(xì)列表(R參數(shù))例3:顯示所有文件和目錄,包括隱含文件但不列出“.”當(dāng)前目錄和“..”父目錄,在每個(gè)文件名的后面或是前面添加一個(gè)特定的后綴字符的方法指出它的類型,如圖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ù)結(jié)果3.mkdir命令⑴mkdir語(yǔ)法:mkdir[選項(xiàng)|參數(shù)]目錄名⑵mkdir命令說(shuō)明:用于創(chuàng)建目錄。⑶使用權(quán)限:所有用戶。⑷mkdir命令參數(shù)選項(xiàng):-p:確保目錄名稱存在,不存在的話就創(chuàng)建一個(gè)。-m:在創(chuàng)建目錄時(shí)設(shè)置目錄權(quán)限。⑸范例:例1:使用自己的學(xué)號(hào)和姓名各創(chuàng)建一個(gè)子目錄,并用ls命令觀察結(jié)果,如圖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)建一個(gè)已經(jīng)存在的子目錄,觀察顯示結(jié)果,如圖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)建已存在子目錄結(jié)果4.rmdir命令⑴rmdir語(yǔ)法:rmdir[選項(xiàng)|參數(shù)]目錄名⑵rmdir命令說(shuō)明:用語(yǔ)刪除空的目錄。⑶使用權(quán)限:所有用戶。⑷rmdir命令參數(shù)選項(xiàng):-p:當(dāng)子目錄被刪除后使它也成為空目錄的話,則順便一并刪除。⑸范例:例1:刪除上例中使用mkdir創(chuàng)建的“2007435124”和“溫周洋”子目錄,并使用ls命令觀察結(jié)果,如圖1-7所示。圖1-7使用rmdir刪除子目錄例2:使用rmdir刪除一個(gè)不存在的目錄,并觀察結(jié)果,如圖1-8所示。圖1-8使用rmdir命令刪除不存在目錄結(jié)果⑴cd語(yǔ)法:cd目錄名⑵命令說(shuō)明:用語(yǔ)更改當(dāng)前目錄。⑶使用權(quán)限:所有用戶。⑷范例:例1:使用cd命令進(jìn)入“07124”目錄(已存在)和“07142”目錄(不存在),并觀察結(jié)果,如圖1-9所示。圖1-9更改當(dāng)前目錄6.pwd命令⑴pwd語(yǔ)法:pwd⑵命令說(shuō)明:顯示當(dāng)前用戶所在工作組目錄位置。⑶使用權(quán)限:所有用戶。⑷范例:例1:顯示當(dāng)前用戶所在工作組目錄,如圖1-10所示。[root?ocaIhost pv>d/root/ntsktop[rout酗oc日]h”t圖1-10顯示當(dāng)前目錄7.cp命令⑴cp語(yǔ)法:cp[選項(xiàng)|源文件或目錄][目標(biāo)文件或目錄][目的目錄]⑵命令說(shuō)明:復(fù)制文件或目錄。⑶使用權(quán)限:所有用戶。⑷cp命令參數(shù)表,見(jiàn)表1-2。
參數(shù)選項(xiàng)說(shuō) 明-a此參數(shù)的效果和同時(shí)指定“-dpR”參數(shù)相同-b刪除覆蓋目標(biāo)文件之前備份,備份文件會(huì)在字尾加上一個(gè)備份字符串-d當(dāng)復(fù)制符號(hào)鏈接時(shí),把目標(biāo)文件或目錄也建立符號(hào)鏈接,并指向與源文件或目錄鏈接的原始文件或目錄-f強(qiáng)行復(fù)制文件或目錄不論目標(biāo)文件或目錄是否存在-i覆蓋既有文件之前先詢問(wèn)用戶-l對(duì)源文件建立硬鏈接,而非復(fù)制文件-p保留源文件或目錄的屬性-P保留源文件或目錄的路徑-r遞歸處理,將指定目錄下的文件與子目錄一并處理-R遞歸處理,將指定目錄下的所有文件與子目錄一并處理-s對(duì)文件建立符號(hào)鏈接,而非復(fù)制文件-u使用這項(xiàng)參數(shù)后只會(huì)在源文件的更改時(shí)間較目標(biāo)文件更新時(shí)或與名稱對(duì)應(yīng)的目標(biāo)文件并不存在,才復(fù)制文件-v顯示命令執(zhí)行過(guò)程-x復(fù)制文件或目錄存放的文件系統(tǒng),必須與cp命令執(zhí)行時(shí)所處文件系統(tǒng)相同,否則不復(fù)制(5)范例:例1:復(fù)制/root/2007435124/下的所有以24開(kāi)頭的文件到/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復(fù)制所有以24開(kāi)頭的對(duì)象8.rm命令⑴rm語(yǔ)法:rm[選項(xiàng)][文件或目錄...]⑵rm命令說(shuō)明:刪除文件或目錄。⑶使用權(quán)限:所有用戶。⑷rm命令參數(shù)表,見(jiàn)表1-3。參數(shù)選項(xiàng)說(shuō) 明d直接把欲刪除的目錄的硬鏈接數(shù)據(jù)刪成0,刪除該目錄-f強(qiáng)制刪除文件或目錄,刪除文件或目錄前不在詢問(wèn)用戶-i刪除既有文件或目錄之前先詢問(wèn)用戶,此為默認(rèn)項(xiàng)-r/-R遞歸處理,將指定目錄下的所有文件及子目錄一并處理-v顯示命令執(zhí)行過(guò)程⑸范例:例1:直接刪除/root/2007435124/24.c文件,刪除前不詢問(wèn)用戶,如圖1-12所示。圖1-12刪除文件例2:刪除/root/2007435124下的wen.txt文件和24子目錄,刪除前詢問(wèn)用戶,如圖1-13所示。[rooi^localhost2U0743b124](t】呂123tc-24 2451Lu24“tx1v?n.txt[rooi^loca]ho£t2C0743b124]Jtrm-r24txirnt是習(xí)刪除丨丨錄54'?yrnt是習(xí)刪際一般丈件屆mtxi'?y[rooi@loca]host2007435124]ff】w123.c2451.0 24.i:y1[rcci@loca]ho£t2007435124]ff圖1-13刪除特定文件和目錄9.mv命令⑴mv語(yǔ)法:mv[文件1或目錄1][文件2或目錄2]⑵mv命令說(shuō)明:移動(dòng)文件或修改文件名。⑶使用權(quán)限:所有用戶。⑷范例:例1:修改/root/2007435124目錄下的文件24.txt為wen.txt,如圖1-14所示。
圖1-14修改文件名例2:移動(dòng)/root/2007435124目錄下的wen.txt文件到/root/下,如圖1-15所示。圖1-15移動(dòng)文件cat命令⑴cat命令語(yǔ)法:cat[選項(xiàng)]文件名⑵cat命令說(shuō)明:用于顯示特定文件到標(biāo)準(zhǔn)輸出設(shè)備或另一個(gè)文件中。⑶使用權(quán)限:所有用戶。⑷cat命令參數(shù)表,見(jiàn)表1-4。表1-4cat命令參數(shù)參數(shù)選項(xiàng)說(shuō)明-n由1開(kāi)始對(duì)所有輸出的行數(shù)編號(hào)-b和-n相似,只不過(guò)對(duì)于空格行不編號(hào)-s當(dāng)遇上連續(xù)兩行以上空白行時(shí)就換成一行空白行⑸范例:例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命令語(yǔ)法:more文件名⑵more命令說(shuō)明:用于分頁(yè)顯示指定文件的內(nèi)容。⑶使用權(quán)限:所有用戶。⑷范例:例1:逐頁(yè)顯示/etc/samba/smb.conf的內(nèi)容,要求一次顯示10行,如圖1-17所示。圖1-17逐頁(yè)顯示文件內(nèi)容clear和date命令⑴clear命令說(shuō)明:用于清屏。⑵date命令說(shuō)明:顯示系統(tǒng)當(dāng)前時(shí)間。⑶范例:例1:顯示當(dāng)前系統(tǒng)時(shí)間,如圖1-18所示。圖1-18顯示系統(tǒng)時(shí)間第二章Vi編輯器Vi編輯器簡(jiǎn)介Vi編輯器概述在各種操作系統(tǒng)中,編輯各種文件是必不可少的工作部分。在Linux操作系統(tǒng)中提供了一系列的編輯器供用戶使用,例如Vi、Vim、Emacs、pico、ex、ed等,其中Vim(Vi的增強(qiáng)版)是最常用的編輯器,它是唯一在所有版本的Linux系統(tǒng)和其他各種UNIX系統(tǒng)中都配備的文本編輯器。Vi編輯器的工作模式Vi編輯器有3種工作模式,在每種工作模式下能做不同的操作。⑴命令模式:是進(jìn)入Vi的默認(rèn)模式,在此模式下可以對(duì)所編輯文檔進(jìn)行復(fù)制、粘貼、刪除、移動(dòng)光標(biāo)、繼續(xù)查找等操作,同時(shí)它也是末行模式和編輯模式之間進(jìn)行切換的中轉(zhuǎn)站。⑵末行模式:用于文件的保存、退出、定位光標(biāo)、查找、替換、設(shè)置行標(biāo)等操作。⑶編輯模式:用于直接編輯文件。(4)三種模式之間的切換方法如圖2-1所示。從圖2-1中可以看到,編輯模式和末行模式之間不能直接切換,必須通過(guò)命令模式進(jìn)行過(guò)度。圖2-1工作模式切換模式圖Vi編輯器操作2.2.1Vi編輯器的啟動(dòng)可以使用簡(jiǎn)單的命令來(lái)啟動(dòng)Vim文本編輯器,通常可直接指定需要編輯的文件路徑,即使需要編輯的是一個(gè)原本不存在的新文件。一般命令如下所示:[Root@linuxroot]#vim文件名2.2.2三種模式的操作進(jìn)入Vi后,首先會(huì)看到如圖2-2所示的界面:圖2-2Vi主界面(命令模式)圖2-2所示的界面即為命令模式的界面,在這個(gè)界面下按下“:”鍵就可以進(jìn)入如圖2-3所示的末行模式,所謂“末行模式”就是在編輯器的最后一行進(jìn)行輸入。末行命令wq表示將編輯內(nèi)容寫(xiě)入文件并退出。這里不退出而進(jìn)入編輯模式,因?yàn)槟┬心J讲荒苤苯舆M(jìn)入編輯模式,因此先按下“Esc”鍵退回命令模式,在命令模式下按“insert”進(jìn)入如圖2-4所示的編輯模式,在編輯模式下可以輸入文本。圖2-3末行模式圖2-4編輯模式2.2.3命令末行模式命令在末行模式下可以輸入末行命令,常用的末行命令見(jiàn)表2-1。表2-1末行模式命令:wpath/filename保存文件:n,mwpath/filename保存指定范圍文檔(n表示開(kāi)始行,m表示結(jié)束行):q!對(duì)文件修改后,不保存強(qiáng)制退出。:q沒(méi)有對(duì)文件做過(guò)修改,退出:wq或:x保存退出rpath/filename讀取文件setnu打開(kāi)行標(biāo)setnonu關(guān)閉行標(biāo)/char正向查找字符?char反向查找字符命令模式命令
在命令模式下,也可以使用大量的命令對(duì)文件進(jìn)行編輯等操作,常用的命令模式命令見(jiàn)表2-2。表4-2命令模式命令a從光標(biāo)所在位置后面新增文字,光標(biāo)后的文字隨新增文字向后移動(dòng)A從光標(biāo)所在列最后面的地方開(kāi)始新增文字i從光標(biāo)所在位置前面開(kāi)始插入文字,光標(biāo)后的文字隨新增文字移動(dòng)<可用insert鍵〉I從光標(biāo)所在列的第一個(gè)非空白字符前面開(kāi)始插入文字o在光標(biāo)所在列下新增一列并進(jìn)入輸入模式O在光標(biāo)所在列上方新增一列并進(jìn)入輸入模式x刪除光標(biāo)所在字符<也可以用Delete鍵〉dd刪除光標(biāo)所在行r修改光標(biāo)所在字符,r后接要修改的字符R進(jìn)入替換狀態(tài),新增文字會(huì)覆蓋原先文字知道按ESC后到命令模式s刪除光標(biāo)所在字元,并進(jìn)入輸入模式S刪除光標(biāo)所在的列,并進(jìn)入輸入模式第三草Linux下C語(yǔ)言編程3.1gcc簡(jiǎn)介1.gcc基本語(yǔ)法gcc[option][filename]表3-1gcc參數(shù)列表選項(xiàng)功能-c對(duì)源文件進(jìn)行預(yù)處理、編譯和匯編,產(chǎn)生目標(biāo)文件,但不進(jìn)行連接。-0<文件名〉定義輸出的執(zhí)行文件名為<文件名〉-S在編譯后停止,產(chǎn)生類型名為s的匯編代碼文件-E在預(yù)處理后停止,輸出預(yù)處理后的源代碼至標(biāo)準(zhǔn)輸出,不進(jìn)行編譯-O對(duì)程序進(jìn)行編譯優(yōu)化,編譯速度比不做優(yōu)化慢且要求內(nèi)存多。-O2比-0優(yōu)化效果更好,但編譯速度較慢-g產(chǎn)生一張用于調(diào)試和排錯(cuò)的擴(kuò)展符號(hào)表,以便用gdb進(jìn)行調(diào)試3.2Linux下C語(yǔ)言編程1.編寫(xiě)程序?qū)崿F(xiàn)如下圖形顯示*******1**1**1**1**1*rTw*1* *1* zT*zT*zT*zT*zT*zT*程序?qū)崿F(xiàn)代碼如下,運(yùn)行結(jié)果如圖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.編寫(xiě)程序?qū)崿F(xiàn)求三個(gè)數(shù)中最大值程序?qū)崿F(xiàn)代碼如下,運(yùn)行結(jié)果如圖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求三個(gè)數(shù)中最大值編寫(xiě)程序?qū)崿F(xiàn)求一維數(shù)組中最大值程序?qū)崿F(xiàn)代碼如下所示,運(yùn)行結(jié)果如圖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是一個(gè)由GNU開(kāi)源組織發(fā)布的、UNIX/LINUX操作系統(tǒng)下的、基于命令行的、功能強(qiáng)大的程序調(diào)試工具。其基本命令見(jiàn)表3-2。表3-2GDB命令命令說(shuō)明file<文件名〉加載被調(diào)試的可執(zhí)行程序文件。因?yàn)橐话愣荚诒徽{(diào)試程序所在目錄下執(zhí)行GDB,因而文本名不需要帶路徑。rRun的簡(jiǎn)寫(xiě),運(yùn)行被調(diào)試的程序。如果此前沒(méi)有下過(guò)斷點(diǎn),則執(zhí)行完整個(gè)程序;如果有斷點(diǎn),則程序暫停在第一個(gè)可用斷點(diǎn)處。cContinue的簡(jiǎn)寫(xiě),繼續(xù)執(zhí)行被調(diào)試程序,直至下一個(gè)斷點(diǎn)或程序結(jié)束b<行號(hào)〉b:Breakpoint的簡(jiǎn)寫(xiě),設(shè)置斷點(diǎn)。兩可以使用''行號(hào)”“函數(shù)名稱”“執(zhí)行地址”b<函數(shù)名稱〉等方式指定斷點(diǎn)位置。b*<函數(shù)名稱〉其中在函數(shù)名稱前面加“*”符號(hào)表示將斷點(diǎn)設(shè)置在''由編譯器生成的prolog代碼
b*<代碼地址〉d[編號(hào)]處”。如果不了解匯編,可以不予理會(huì)此用法。d:Deletebreakpoint的簡(jiǎn)寫(xiě),刪除指定編號(hào)的某個(gè)斷點(diǎn),或刪除所有斷點(diǎn)。斷點(diǎn)編號(hào)從1開(kāi)始遞增。s,nS:執(zhí)行一行源程序代碼,如果此行代碼中有函數(shù)調(diào)用,則進(jìn)入該函數(shù);n:執(zhí)行一行源程序代碼,此行代碼中的函數(shù)調(diào)用也一并執(zhí)行。s相當(dāng)于其它調(diào)試器中的“StepInto(單步跟蹤進(jìn)入)”;n相當(dāng)于其它調(diào)試器中的“StepOver(單步跟蹤)”。這兩個(gè)命令必須在有源代碼調(diào)試信息的情況下才可以使用(GCC編譯時(shí)使用“-g”參數(shù))。si,nisi命令類似于s命令,ni命令類似于n命令。所不同的是,這兩個(gè)命令(si/ni)所針對(duì)的是匯編指令,而s/n針對(duì)的是源代碼。p<變量名稱〉Print的簡(jiǎn)寫(xiě),顯示指定變量(臨時(shí)變量或全局變量)的值display...undisplay<編號(hào)〉display,設(shè)置程序中斷后欲顯示的數(shù)據(jù)及其格式。例如,如果希望每次程序中斷后可以看到即將被執(zhí)行的下一條匯編指令,可以使用命令“display/i$pc”其中$pc代表當(dāng)前匯編指令,/i表示以十六進(jìn)行顯示。當(dāng)需要關(guān)心匯編代碼時(shí),此命令相當(dāng)有用。undispaly,取消先前的display設(shè)置,編號(hào)從1開(kāi)始遞增。iInfo的簡(jiǎn)寫(xiě),用于顯示各類信息,詳情請(qǐng)杳閱“helpi”。-q Quit的簡(jiǎn)寫(xiě),退出GDB調(diào)試環(huán)境。Linux下使用gdb進(jìn)行程序調(diào)試(以一個(gè)C語(yǔ)言程序?yàn)槔?。首先使用gcc進(jìn)行編譯如下:[Root@linuxroot]#gcctt.c-ott-g然后進(jìn)入gdb,會(huì)看到說(shuō)明,接著加載已經(jīng)編譯過(guò)的C文件,加載成功后使用r命令運(yùn)行結(jié)果如圖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進(jìn)行調(diào)試可以進(jìn)行斷點(diǎn)設(shè)置,在第21行設(shè)置一個(gè)斷點(diǎn)(b命令),然后使用r命令進(jìn)行運(yùn)行,當(dāng)程序運(yùn)行至斷點(diǎn)時(shí)程序停止,繼續(xù)運(yùn)行可以使用c命令,運(yùn)行過(guò)程如圖3-5所示。圖3-5斷點(diǎn)設(shè)置第四章進(jìn)程控制和通信4.1進(jìn)程控制利用signal和kill實(shí)現(xiàn)軟中斷通信kill()系統(tǒng)調(diào)用格式:intkill(pid,sig)參數(shù)定義:intpid,sig;其中,pid是一個(gè)或一組進(jìn)程的標(biāo)識(shí)符,參數(shù)sig是要發(fā)送的軟中斷信號(hào)。pid>0時(shí),核心將信號(hào)發(fā)送給進(jìn)程pid。pid=0時(shí),核心將信號(hào)發(fā)送給與發(fā)送進(jìn)程同組的所有進(jìn)程。pid=-1時(shí),核心將信號(hào)發(fā)送給所有用戶標(biāo)識(shí)符真正等于發(fā)送進(jìn)程的有效用戶標(biāo)識(shí)號(hào)的進(jìn)程。signal()預(yù)置對(duì)信號(hào)的處理方式,允許調(diào)用進(jìn)程控制軟中斷信號(hà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用于指定信號(hào)的類型,sig為0則表示沒(méi)有收到任何信號(hào).function:在該進(jìn)程中的一個(gè)函數(shù)地址,在核心返回用戶態(tài)時(shí),它以軟中斷信號(hào)的序號(hào)作為參數(shù)調(diào)用該函數(shù),對(duì)除了信號(hào)SIGKILL,SIGTRAP和SIGPWR以外的信號(hào),核心自動(dòng)地重新設(shè)置軟中斷信號(hào)處理程序的值為SIG_DFL,—個(gè)進(jìn)程不能捕獲SIGKILL信號(hào)。function的解釋如下:function=1時(shí),進(jìn)程對(duì)sig類信號(hào)不予理睬,亦即屏蔽了該類信號(hào);function=0時(shí),缺省值,進(jìn)程在收到sig信號(hào)后應(yīng)終止自己;function為非0,非1類整數(shù)時(shí),function的值即作為信號(hào)處理程序的指針。4.2Linux下進(jìn)程控制實(shí)現(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ù)使用的信號(hào)}waiting();kill(pid1,16);〃向child1子進(jìn)程發(fā)送16號(hào)中斷kill(pid2,17);〃向child2子進(jìn)程發(fā)送17號(hào)中斷wait(O);//等待兩個(gè)子進(jìn)程結(jié)束wait(O);printf("parentprocessiskilled\n");exit(O);}else{waite=1;signal(17,start);//接受父進(jìn)程發(fā)送的17號(hào)中斷,調(diào)用信號(hào)中斷函數(shù)start()waiting();printf("child2iskilled*");exit(0);}}else{waite=1;signal(16,start);//接受父進(jìn)程發(fā)送的16號(hào)中斷,調(diào)用信號(hào)中斷函數(shù)start()waiting();printf("child1iskilled*");exit(0);}}運(yùn)行結(jié)果如圖4-1所示。4.3進(jìn)程通信在計(jì)算機(jī)系統(tǒng)中,并發(fā)進(jìn)程之間經(jīng)常要交換一些信息。在并發(fā)進(jìn)程間用pv操作交換信息實(shí)現(xiàn)進(jìn)程的同步和互斥,以保障安全地共享資源和協(xié)調(diào)地完成任務(wù)。因此,把pv操作可看作是進(jìn)程間的一種通信,但這種方式只交換少量的信息,例如緩沖區(qū)中是否已有物品和是否可以讀文件等,可以把這種通信
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四管管理制度
- 搶救與急救措施管理制度
- 利用導(dǎo)數(shù)解決不等式的恒成立問(wèn)題
- 人教部編版四年級(jí)語(yǔ)文上冊(cè)口語(yǔ)交際《講歷史人物故事》精美課件
- 福建省福州市三校聯(lián)考2024年高三練習(xí)題五(全國(guó)卷)數(shù)學(xué)試題
- 2024年湖南客運(yùn)資格證培訓(xùn)考試題答案解析
- 2024年河南客運(yùn)考試應(yīng)用能力試題答案解析
- 2024年重慶客運(yùn)旅客急救考試答案
- 2024年河源小型客運(yùn)從業(yè)資格證考試培訓(xùn)試題和答案
- 吉首大學(xué)《歷史文獻(xiàn)學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 基于教、學(xué)、評(píng)一體化的初中英語(yǔ)寫(xiě)作教學(xué)實(shí)踐以譯林版《英語(yǔ)》九年級(jí)上冊(cè)Unit
- 魚(yú)塘所有權(quán)證明
- 醫(yī)療器械自查表【模板】
- 變頻恒壓供水設(shè)備安全操作規(guī)定
- 健康管理學(xué)教學(xué)大綱
- 公路施工安全技術(shù)交底資料(完整版)
- 《傳感器原理與應(yīng)用》教案
- 臺(tái)灣歌仔戲的歷史演變
- 《影視光線藝術(shù)與照明技巧》word版本
- 大柳塔煤礦井下移動(dòng)設(shè)備管理辦法
- 我家鄉(xiāng)-湖北鐘祥教學(xué)課件
評(píng)論
0/150
提交評(píng)論