《Linux編程環(huán)境》期末考試樣題及參考答案.doc_第1頁
《Linux編程環(huán)境》期末考試樣題及參考答案.doc_第2頁
《Linux編程環(huán)境》期末考試樣題及參考答案.doc_第3頁
《Linux編程環(huán)境》期末考試樣題及參考答案.doc_第4頁
《Linux編程環(huán)境》期末考試樣題及參考答案.doc_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

UNIX編程環(huán)境期末考試樣題及參考答案一. 給出完成下列各項功能所需要的UNIX系統(tǒng)命令。要求:給出實現(xiàn)這一功能的完整命令;不能給出完整命令可以僅給出所需要的命令名稱。必須陳述利用了這個命令的哪個功能或選項。每題2分,共24分。1. 刪除文件為-i的文件。答:使用rm命令,由于命令會默認以減號開始的命令行參數(shù)為命令處理的選項而不是處理對象,所以需要使用特殊的選項-以顯式的方式說明選項的結(jié)束。命令為 rm - -i2. 命令netstat有很多選項,如何得知使用哪個選項可以打印出ip的路由表?答:使用man命令,man命令可以在線查閱命令的使用手冊,使用命令man netstat查出netstat命令的使用手冊,看看哪個選項和什么命令格式用來打印出ip的路由表。3. 刪除當前目錄下的子目錄tmp及該目錄下屬的所有文件和子孫目錄。答:使用rm命令,rm命令有個選項可以遞歸地刪除一個子目錄,命令為rm r tmp 4. 在你完成上機作業(yè)過程中,使用什么命令將源程序文件myrm.c編譯、鏈接生成可執(zhí)行文件?可執(zhí)行文件是什么名字?如何運行?答:使用gcc命令或者make,實現(xiàn)編譯和鏈接gcc myrm.c o myrm或者:make myram生成的可執(zhí)行文件名按照慣例為myrm,一般情況下當前環(huán)境變量PATH不包括當前目錄,所以,運行這個可執(zhí)行程序應(yīng)當加上當前路徑,命令為:./myrm命令有個選項可以遞歸地刪除一個子目錄,命令為./myrm r tmp 5. 檢索目錄src以及其子孫目錄中的所有文件名后綴為.c和.h文件,查找哪些文件中含有字符串TPDU,并列出在這文件中的行號。答:使用find命令和grep命令。find命令可以在指定的目錄樹中查找滿足某個條件的文件或目錄,并對查找到的滿足條件的對象執(zhí)行一個動作。指定查找條件為“文件名后綴為.c和.h”,動作為“查找哪些文件中含有字符串TPDU,并列出在這文件中的行號”,分別是find的-name和-exec選項。完整的命令為:find src name ”*.ch” exec grep n TPDU /dev/null ;6. 統(tǒng)計出由用戶liu創(chuàng)建并且正在運行的進程數(shù)目。答:使用ps命令列表出系統(tǒng)中所有進程,過濾后僅保留用戶liu創(chuàng)建的進程(用grep),每個進程占一行,用wc命令統(tǒng)計一共有多少行即可。ps ef | grep liu | wc l7. 去掉文件list.txt中的所有空行(所謂空行指:行內(nèi)不含有任何除空格之外的字符),存為新文件list-new.txt。答:使用grep命令可以用正則表達式對文本文件過濾,-v選項用于篩選掉能匹配指定正則表達式的行,描述一個空行的正則表達式為 *$,即:從行首開始(),有零個到多個空格( *),然后是行尾($),命令為:grep v *$ list.txt list-new.txt8. 程序文件fexc.c約有2000行,保留了一個備份fexc0.c后另個程序員在fexc.c中作了多處修改,如何找出他在原先程序的基礎(chǔ)上作了哪些修改?答: diff命令可以對文本文件進行比較,找出兩個文件的差別。由于C語言源程序文件為文本文件,可以用diff完成上述功能。完整的命令為: diff fexc0.c fexc.c9. 目錄mywork.dir上周的備份目錄為mywork.bak,其中僅有一小部分文件作了修改,僅僅將被修改過的文件和新創(chuàng)建的文件拷貝到備份目錄。答: cp命令實現(xiàn)了增量拷貝的功能,增量拷貝的基本功能就是檢查源目錄下的文件和目的目錄下的同名文件的最后一次修改時間,當源文件的最后一次修改時間晚于目的文件的最后一次修改時間,或者同名的目的文件不存在時,才執(zhí)行復(fù)制操作。完整的命令為: cp ur mywork.dir mywork.bak10. 程序xserverd正在運行,隨時間的變化,系統(tǒng)的內(nèi)存資源越來越少。如何判斷是否是該程序在運行過程中存在內(nèi)存泄漏導(dǎo)致內(nèi)存資源越來越少?答:ps命令的-l選項,可以打印出進程當前的SZ屬性,即:進程的虛擬內(nèi)存空間大小。當進程在運行過程中存在內(nèi)存泄漏時,進程的虛擬內(nèi)存空間大小會逐漸隨時間增大。使用ps l | grep xserverd可以看出進程xserverd屬性。11. 系統(tǒng)在當前一段時間內(nèi)出現(xiàn)CPU負載很重現(xiàn)象,系統(tǒng)的響應(yīng)時間明顯增大。怎樣判斷是哪些程序的運行占用了過多的CPU而導(dǎo)致的系統(tǒng)負載過重?答:ps命令可以打印出進程當前的TIME屬性,即:進程運行占用的CPU時間(不計睡眠時間)。使用ps命令觀察哪些進程的TIME屬性隨時間在同步增長,就可以判斷出哪些程序的運行占用了過多的CPU而導(dǎo)致的系統(tǒng)負載過重。12. df h /opt命令的執(zhí)行格式如下:Filesystem Size Used Avail Use% Mounted on/dev/sda6 90G 47G 39G 55% /opt命令列出了磁盤使用情況,如何自動地在終端上每1分鐘給出一次報告?答:自動地重復(fù)執(zhí)行一個命令,利用shell的循環(huán)機制。讓shell睡眠60秒鐘的命令為sleep 60。整個命令為:while true; do df h /opt; sleep 60;done二、 判斷題 每題2分共20分, 下列說法是否正確,并簡述理由。注意:理由陳述不正確不得分。1. UNIX文件權(quán)限設(shè)計為簡單的三級控制,用戶liu對用戶sun的文件data.txt要么具有全部的讀權(quán)限,要么不可以讀。因此,沒有辦法限制liu只對文件的指定部分讀。答:錯誤。可以利用SUID權(quán)限,用戶sun將文件data.txt的讀寫權(quán)限設(shè)置為rw-,由文件所有者sun自己編寫程序以實現(xiàn)對文件的訪問,程序中的訪問當然可以限制只對文件的指定部分讀,但是該程序文件的屬性應(yīng)當為rws-x-x,用戶liu只有執(zhí)行這個可程序程序文件才能實現(xiàn)對文件data.txt的訪問。2. 命令ln僅允許對普通文件實現(xiàn)硬連接,對目錄不許硬連接操作。所以,所有目錄的link數(shù)總為1。答:錯誤。盡管命令ln僅允許對普通文件實現(xiàn)硬連接,對目錄不許硬連接操作,但是,目錄的硬連接由系統(tǒng)自動實現(xiàn),當前目錄下的.文件和子目錄中的.文件,均是指向當前目錄的硬連接,在創(chuàng)建新目錄時系統(tǒng)自動實現(xiàn)。所以,目錄的link數(shù)會大于1,一般情況下目錄的link數(shù)=直屬子目錄數(shù)+2。3. 如果父進程不對僵尸進程進行處理,那么,僵尸進程過多,即使系統(tǒng)有足夠內(nèi)存,也可能導(dǎo)致系統(tǒng)無法正常工作。答:正確。進程執(zhí)行的結(jié)束階段產(chǎn)生僵尸進程,原進程所占有的數(shù)據(jù)段、指令段、堆棧段內(nèi)存都已經(jīng)釋放,系統(tǒng)僅為僵尸進程保存一個進程表表項。但是,僵尸進程過多會因為占用光內(nèi)核中全部的進程表表項,導(dǎo)致無法啟動新的進程。4. fork后得到兩個幾乎完全相同的進程,父子進程可以共享代碼段,但是父子進程必須有獨立的數(shù)據(jù)段和堆棧段。設(shè)代碼段,數(shù)據(jù)段和堆棧段的大小分別為a,b,c,那么,fork()后父子進程占用的物理內(nèi)存總大小是a+2(b+c)。答:錯誤。盡管fork后,從邏輯上可以得到兩個幾乎完全相同的進程,父子進程有獨立的數(shù)據(jù)段、堆棧段和指令段,但是,操作系統(tǒng)可以通過使用copy-on-write技術(shù)等方式,使得父子進程共享同一段物理內(nèi)存,除了代碼段可以共享之外,也可以共享數(shù)據(jù)段和堆棧段。5. unix的進程調(diào)度程序能做到保證大部分進程處于運行狀態(tài),只有少數(shù)進程處于阻塞狀態(tài),否則,系統(tǒng)的性能將大大下降。答:錯誤。事實上,恰恰相反,大部分進程處于“阻塞”狀態(tài),只有所等待的條件滿足后才能轉(zhuǎn)換為“運行狀態(tài)”。進程調(diào)度程序僅調(diào)度那些運行狀態(tài)的進程。將進程的狀態(tài)從“阻塞”轉(zhuǎn)換為“運行”不是調(diào)度程序的任務(wù),僅取決于外部條件的變化。6. 如果某個文件的權(quán)限設(shè)置為文件主不許讀寫,那么其他任何人都不可讀寫該文件。答:錯誤。超級用戶root不受權(quán)限的限制。UNIX在驗證一個普通用戶的進程對文件的訪問權(quán)限嚴格按照下列三步進行:如果文件主與進程主相同,那么,使用文件主權(quán)限,不再查組和其他用戶的權(quán)限;如果文件主與進程主不同,但文件主與進程主同組,那么,只使用組權(quán)限,不使用關(guān)于其他用戶的權(quán)限;如果文件主與進程主不同,文件主與進程主又不同組,那么,使用文件關(guān)于其他用戶的權(quán)限。 所以,可把文件許可權(quán)置為文件主不可讀寫但同組用戶可讀寫,即使文件主是該組用戶之一也不行事實上;而且無論權(quán)限怎么設(shè)置,都不妨礙root用戶操作它。7. 使用socket利用TCP協(xié)議編寫通信程序,bind調(diào)用只允許在服務(wù)端使用,客戶端使用這一調(diào)用沒有任何意義。答:錯誤。bind調(diào)用的目的是指定一個網(wǎng)絡(luò)連接的本地端點名,事實上,恰恰相反,大部分進程處于“阻塞”狀態(tài),只有所等待的條件滿足后才能轉(zhuǎn)換為“運行狀態(tài)”。進程調(diào)度程序僅調(diào)度那些運行狀態(tài)的進程。將進程的狀態(tài)從“阻塞”轉(zhuǎn)換為“運行”不是調(diào)度程序的任務(wù),僅取決于外部條件的變化。8. UNIX操作系統(tǒng)被設(shè)計得非常健壯,所以程序在運行過程中不會產(chǎn)生死鎖。答:錯誤。像信號量等,UNIX僅給出了一組信號量操作的機制,如果應(yīng)用程序設(shè)計的多個進程之間對信號量的操作處置不當,仍然可能導(dǎo)致死鎖。操作系統(tǒng)沒有辦法檢測出應(yīng)用進程之間的邏輯操作不正確產(chǎn)生的死鎖。使用管道等其他的進程之間通信的系統(tǒng)調(diào)用,也可能產(chǎn)生死鎖。9. UDP不能保證可靠遞交,在局域網(wǎng)環(huán)境下,假設(shè)通信線路是可靠的,盡管如此,兩臺計算機用UDP交換數(shù)據(jù)也有可能會丟失數(shù)據(jù)。答:正確。盡管通信沒有任何故障,但是UDP通信的雙方并沒有流量控制,所以,可能會由于接收緩沖區(qū)溢出的原因?qū)е虏僮飨到y(tǒng)被迫丟棄數(shù)據(jù)。10. Windows用戶使用命令行命令ftp從Unix下載文件ftas.c,即使沒有病毒破壞,成功下載結(jié)束后,下載的文件與原文件也有可能在文件大?。ㄗ止?jié)數(shù))上不符。答:正確。這種情況是可能存在的, FTP支持ASCII方式和BINARY方式的文件傳輸。前者會把數(shù)據(jù)文件理解為文本文件,會在通信的兩個機器之間進行文本文件格式的轉(zhuǎn)換。UNIX和Windows對文本文件的定義方式不同,Windows行間保留“換行”和“回車”兩個字符,但是UNIX行間僅包括“換行”一個字符。所以在使用ASCII方式在Windows和Unix間交換文件可能會導(dǎo)致下載的文件與原文件在文件大?。ㄗ止?jié)數(shù))上不符的情況。三. 簡答題與編程題(共56分)1. (5分)用戶liu有一個重要的文件report.txt, 為保證該文件不會被無意地修改,移走和刪除,應(yīng)當采取什么措施? 答:為保證文件不會被無意地修改,取消文件的寫權(quán)限;為保證文件不會被無意地移走和刪除,取消該文件所在目錄的寫權(quán)限。2. (5分)關(guān)于文本文件處理的實用程序都有哪些?這些程序都有哪些共同的特點?為什么要這樣設(shè)計這些命令?答:關(guān)于文本文件處理的實用程序有很多,如:head,tail,sort,grep,wc,cat,od,sed,awk,等等。這些程序的共同特點是:每個小程序的功能設(shè)置簡潔;當不指定處理對象時從標準輸入獲取處理數(shù)據(jù);當指定文件名時,從指定的文件中獲取處理數(shù)據(jù),而且允許指定多于一個的文件名;處理結(jié)果在標準輸出文件中輸出。這樣設(shè)計這些命令的原因是:可以利用系統(tǒng)提供的輸入、輸出重定向和管道,連接和組合多個命令,提供靈活又豐富的使用功能;允許指定多于一個的文件作為處理對象可以和shell 的文件名通配符替換功能配合使用。體現(xiàn)了“策略和機制相分離”的設(shè)計理念。系統(tǒng)設(shè)計不復(fù)雜卻可以提供強大的功能。3. (5分)什么是“忙等待”?忙等待有什么壞處?答:忙等待就是進程不斷占用CPU時間執(zhí)行一個循環(huán)進行查詢操作,直到條件滿足才退出循環(huán)。忙等待的壞處在于:UNIX系統(tǒng)是個多任務(wù)系統(tǒng),在等待周期內(nèi),可能需要每秒執(zhí)行查詢操作成千上萬次,與其它的執(zhí)行進程競爭CPU時間,造成系統(tǒng)總體有效處理能力下降。4. (5分) 目錄的x權(quán)限起什么作用?root用戶擁有的目錄樹eldk下有許多子目錄,每個子目錄中也有若干個文件?,F(xiàn)在root用戶希望把這個目錄樹下所有子目錄對所有用戶開放x權(quán)限,但普通文件的權(quán)限不修改。怎樣才能完成這個工作?答:(1)目錄的x權(quán)限意味著分析路徑名過程中可檢索該目錄。(2)完成這個要求可以使用find命令遍歷目錄樹eldk,符合規(guī)定條件“類型是目錄”(-type d),執(zhí)行指定動作“修改權(quán)限”(-exec chmod a+x ;)完整的命令為:find eldk -type d -exec chmod a+x ;5. (5分)寫出能滿足下列要求的正則表達式:(1) 第一個字符必須是字母,其余字符必須是字母或數(shù)字或下劃線。(2) 匹配C語言算式ai*bj,允許星號兩側(cè)有多余的空格。(3) 匹配帶小數(shù)點的數(shù)據(jù),如:123.431寫出vi中能實現(xiàn)下列替換要求的命令:(4) 將格式為“日-月-年”的日期數(shù)據(jù),如:18-06-2010,替換為“年.月.日”格式,如:2010.06.18(5) 將3.1416替換為PI 答: (1) A-Za-za-zA-Z0-9_*(2) ai * *bj(3) 0-90-9*.0-90-9*(4) s/(0-90-9*)-(0-90-9*)-(0-90-9*)/3.2.1/(5)s/3.1416/PI/6. (5分) select系統(tǒng)調(diào)用的主要作用是什么? 答:使得用戶進程可同時等待多個事件發(fā)生用戶進程告知內(nèi)核多個事件,某一個或多個事件發(fā)生時select返回,否則,進程睡眠等待。例如:告知內(nèi)核在rfds集合中的任何文件描述符“讀準備好”,或在wfds集合中的任何文件描述符“寫準備好”,或在efds集合中的任何文件描述符有“異常情況”發(fā)生,或者超時時間tm指定的時間間隔到。7. (5分)“策略和機制相分離”的方法,在UNIX系統(tǒng)的很多地方都得到了應(yīng)用,這樣做有什么好處?在UNIX中,哪些問題的處理中采取了這樣的方式?答:這樣做使得系統(tǒng)的實現(xiàn)變得很簡單,但是卻帶來了更大的靈活性,所需要的功能有都能夠?qū)崿F(xiàn)。例如:使用管道和重定向方式組合多個命令完成某些復(fù)雜的功能;SUID權(quán)限;B-Shell中的四則運算,條件判斷。8(5分)echo *與echo *的執(zhí)行結(jié)果有什么區(qū)別?為什么?答:按照shell對文件通配符的處理方式,后者的*將被首先替換為當前目錄下得所有文件和目錄名,前者由于有了雙引號,這種替換被禁止。所以,前者打印星號,后者打印當前目錄下所有的文件和目錄名。9(5分)下列的腳本程序從鍵盤輸入三個整數(shù)A,B,C,并且求出A*(B+C)的值。在劃線出填入適當?shù)膬?nèi)容,完成整個程序。顯式地標出你所添加的命令中必須有的空格和轉(zhuǎn)義字符,并解釋為什么必須這些空格和轉(zhuǎn)義。#!/bin/shecho n ”Input A:”; read Aecho n ”Input B:”; read Becho n ”Input C:”; read CV= echo ”A*(B+C)=$V”答:expr $A * ( $B + $C )由于星號和圓括號屬于shell的元字符,所以前面增加反斜線,阻止shell對元字符的處理,而是將這些符號直接傳遞給expr命令。上述命令一共需要6個空格,空格起單詞分界線的作用。如果 丟失了相應(yīng)的空格,expr命令將無法得到正確的參數(shù)輸入,導(dǎo)致expr無法按預(yù)期的功能工作。10. (5分)寫出一段完整的C語言程序,使用fork()系統(tǒng)調(diào)用,創(chuàng)建兩個子進程,第一個子進程打印HELLO后立刻終止,第二個子進程打印WELCOME后立刻終止,父進程等待兩個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論