Linux操作系統(tǒng)-考試題庫_第1頁
Linux操作系統(tǒng)-考試題庫_第2頁
Linux操作系統(tǒng)-考試題庫_第3頁
Linux操作系統(tǒng)-考試題庫_第4頁
Linux操作系統(tǒng)-考試題庫_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1. 在Linux目錄結構中目錄中的文件是普通用戶可以使用的可使用的可執(zhí)行文件的目錄是B19 A./sbin B./bin C./usr D./lib2. 在Linux目錄結構中Linux的內核及引導程序所需要的文件位于B目錄 A/bin B./boot C./root D./proc3. 在Linux目錄結構中用來存放系統(tǒng)配置文件D目錄 A./lib B./dev C./proc D./etc4. Linux三種特殊權限中僅用于目錄文件的權限是C22 A.SUID B.SGID 5. Linux三種權限中允許進入目錄的權限(C) 22 A.r-可讀 B.w-可寫 6. 以下腳本文件最先自動執(zhí)

2、行的是A24A./etc/rc.local B./etc/profile C./.bashrc D./.bash_logout7. 下面通配符可匹配多個任意字符的通配符是(A)29A.* B. ? C.abcde D.!a-e8. 輸出重定向符號右邊的文件已經(jīng)存在,不會覆蓋文件而是追加的定向符是BA. > B.> > C. 2> D.&>9. 表示用戶家目錄的是BA./home 所有用戶家目錄的父目錄,+用戶名才是用戶家目錄 B. C. . D. .10. 可刪除非空目錄及其子目錄的命令是BA. touch B.rm -r 11. 是強引用的符號AA. 單

3、引號 12. 可顯示隱藏文件的ls命令形式選項是AA. ls -a B. ls -d C.ls -h D .ls -l13. 可通過接受標準輸入作為輸出內容來創(chuàng)建簡單文件的命令是B42A. touch B.cat C.vi D. gedit14. 不帶有編輯功能但有翻頁、按行滾動、搜索功能的命令是B 43A. cat C.head 和 tail D vi15. wc命令可統(tǒng)計文件的行數(shù)、字數(shù)和字節(jié)數(shù)。在以下格式中只顯示文件的字數(shù)的是C 51A. wc B. wc -c C. wc -w D wc -l16. 可實現(xiàn)文件重命名的命令是B52A. cp B. mv C. ln D rename17

4、. 在Linux系統(tǒng)中可通過掛載將光盤、U盤或一個文件系統(tǒng)連接到主目錄樹的一個目錄節(jié)點。期中光盤或光盤鏡像對應的文件系統(tǒng)類型是C44A. vfat B. ext3 C.iso9660 D vboxsf18. 下面更改文件命令只能更改符號連接的目標文件的權限的命令是CA. chown B.chgrp C. chmod19. chmod命令的權限模式可使用字符串形式或八進制形式,當使用八進制形式時模式應由三或四位八進制構成,其中從最高到最低位依次表示為A每個八進制的三個二進制位從高到低分別表示為有無讀、寫、執(zhí)行權限A.文件所有者 文件所屬組 其他用戶 B. 其他用戶 文件所屬組 文件所有者C.文件

5、所屬組 文件所有者 其他用戶 D.其他用戶 文件所有者 文件所屬組20. chmod命令的權限模式可使用字符串形式或八進制形式,當使用八進制形式時模式應由三或四位八進制構成,其中每個八進制的三個二進制位從高到低分別表示為有無 AA.讀寫執(zhí)行B.寫讀執(zhí)行 C.執(zhí)行 讀 寫 D.執(zhí)行 寫 讀21. 運行時不會創(chuàng)建子進程的方式是C69A. 賦予shell程序文件可執(zhí)行權限 ,直接運行shell 程序外部命令B. 調用命令解釋器解釋執(zhí)行shell程序 Shell函數(shù)C.使用source命令執(zhí)行shell 程序內部命令D.用( )將多條命令括起來而形成的復合命令執(zhí)行22. 對于使用C連接的兩條命令,只有

6、當左邊的命令執(zhí)行失敗退出狀態(tài)為非0值才會繼續(xù)執(zhí)行右邊的命令。A. ;B. && C. | 23. Shell執(zhí)行命令在同名時優(yōu)先級別最高的是AA.別名 24. 將一個變量stab的值清除即成為空串的命令是DA. $stab B.$#stab C.$stab D unset stab25. Shell變量不需要預先定義,假設對其進行數(shù)值操作,可指定變量的屬性為整數(shù),具體命令為DA. declare -a 變量名 B.declare -f 變量名 C.typeset -r 變量名 D.typeset -i 變量名26. Shell中可表示引用數(shù)組abrr中的所有非空元素的引用是B7

7、6A. $abrr B.$abrr * C.$#abrr* D.$#abrr27. 在Shell變量引用操作符可實現(xiàn)字符串替換其中C用來測試如果變量stra存在且不為空,則返回為word,否則返回為空串78A.$stra:-word B. $stra:=word C.$stra: +word D.$stra: ?word 28. 在Shell變量引用操作符可實現(xiàn)字符串替換其中D用來測試,如果變量stra存在,則返回為變量stra的值,否則輸出為word ,并退出當前腳本程序A.$stra-word B. $stra=word C.$stra: +word D.$stra: ?word 29.

8、在Shell變量引用操作符可實現(xiàn)模式匹配替換其中B用來的含義是假設pattern 匹配變量stra的頭部,則刪除最長匹配部分并返回剩余部分。A. $stra #pattern B.$stra#pattern C.$stra%pattern D.$stra%pattern30. 為了使子進程能繼承父進程中定義的變量,就必須使D命令將這些變量送入進程轉出區(qū)83A. read B.set C.shift 31. 使用D形式時,即使表達式中有Shell的特殊字符時,也不必用雙引號將其括起來。87A. test 表達式 B. 表達式 C.let 算術表達式 D.算術表達式32. 使用D形式時可以返回算術

9、表達式確實切值A. test 表達式 B. let 算術表達式 C.算術表達式 D.$算術表達式33. gcc可以對編譯階段進行控制,其中B選項規(guī)定編譯到匯編語言,不進行其他操作。107A. -E B.-S 34. gcc可以對編譯階段進行控制,其中A選項設定庫文件的路徑 A.-L path 35. gcc可以對編譯階段進行控制,其中D選項在可執(zhí)行文件中包含標準調試信息,供gdb進行調試。A. -Wall B. -Werror C. -w 36. 在Linux底層文件訪問中的大多數(shù)操作都是圍繞文件描述符來展開的其中A函數(shù)是內核向進程返回一個文件描述符為以后使用148A.open() B. re

10、ad() C. write() D.close()37. 最終文件權限取決于DA. mode B. unmask C. mode&unmask D.mode&unmask 非掩碼38. Lseek()中第三個參數(shù)的值為0表示A39. 文件屬性讀取函數(shù)中,依據(jù)文件名且當文件是一個符號鏈接時返回是鏈接所指向文件的信息的函數(shù)是A152A.stat 40. 利用文件屬性讀取函數(shù)獲取的st_mode進行文件類型測試方法正確的選項是DA. 對成員st_mode同文件類型掩碼進行與運算 B. 對成員st_mode直接判斷C. 利用帶成員st_mode參數(shù)宏用于文件類型判斷定義 D. A和C都

11、可以41. 以下函數(shù)中可關閉文件的函數(shù)AA.close() B. dup2() C. A和B都可以 D.dup()42. 以下底層文件訪問函數(shù)中第一個參數(shù)是文件描述符的是C157A.chmod B. lchown C. fchown43. 硬鏈接是B162A. 指向目標文件的指針 B. 指向文件的索引節(jié)點C. 可跨越不同文件系統(tǒng)創(chuàng)建 D.可通過symlink()來創(chuàng)建44. 讀取鏈接readlink和刪除鏈接unlink操作對象是(C)163A. 都只對硬鏈接有效 B. 都對軟鏈接無效B. 讀取只對軟鏈接有效,刪除都兩種都有效 D.讀取對兩種都有效,刪除只對軟鏈接有效。45. 目錄文件的讀取函

12、數(shù)readdir參數(shù)和返回值的含義C 167A.C.參數(shù)指向目錄文件,返回值指向目錄項 D.返回值指向目錄文件,參數(shù)指向目錄項46. 對磁盤文件的標準I/O操作一般是實現(xiàn)A17147. 當標準輸入和標準輸出涉及交互作用設備時,它們是BA.全緩沖 48. 標準錯誤輸出是CA.全緩沖 B.行緩沖 49. 在函數(shù)fopen() 中文件打開模式中要求文件必須存在的模式是A172A.r和r+ 50. 在函數(shù)fopen() 中文件打開模式中不是可讀寫的方式打開文件模式是DA.r+ B.w+ C.a+ 51. 在打開函數(shù)中其中是在由指定的流上打開由路徑名指定的文件,其返回值為指向文件流指針,此函數(shù)用于將一個

13、指定的文件打開為一個預定義的標準流CA.open B.fopen C.freopen 52. 以下函數(shù)中表示從某流中讀取一個字符但該函數(shù)不帶參數(shù),表示從標準輸入流中讀字符的函數(shù)是C174A.gets B.getc C.getchar 53. 當?shù)竭_文件尾端或出錯時,字符讀取函數(shù)的返回值都是EOF,為進一步確認文件是否已到文件尾,應當通過B函數(shù)來判斷。A.ferror B.feof 54. 在定位函數(shù)中,可直接將流的讀寫指針設置到文件的起始位置同時會將錯誤指示器errno 清零的函數(shù)是rewind 182 無答案55. 下面關于ftell函數(shù)成功調用說法不正確的選項是CA. D.會撤銷已調用un

14、getc對流的影響56. 格式化輸出可把格式化數(shù)據(jù)輸出到標準輸出、指定文件及字符緩沖區(qū)。其中函數(shù)是將格式化數(shù)據(jù)輸出到指定大小的字符緩沖區(qū)。D183A.printf B.fprintf C.sprintf 57. 格式化輸入可從標準輸入、指定文件及字符緩沖區(qū)讀取格式化數(shù)據(jù)。其中函數(shù)是輸出到指定文件。BA.printf B.fprintf 58. 關于臨時文件不正確的選項是A186A.可通過tmpnam創(chuàng)建 B.也可通過tmpfile創(chuàng)建C.程序結束時或關閉文件時自動刪除 D.調用tmpname 次數(shù)有限制59. 以下是進程的異常終止的是D193A. 從main中調用return返回 B.調用ex

15、it C.調用_exit 60. 不屬于非格式化標準I/O的是C61. 關于exit()函數(shù)不正確的選項是B194A. 先清理后進入內核 62. 內核使程序執(zhí)行的方法的是AA. 調用exec函數(shù)63. 關于atexit函數(shù)正確的選項是DA. 一個進程可登記超過32個函數(shù) B.函數(shù)登記的順序 和調用順序相同B. 同一函數(shù)可登記多次,但調用一次64. 非初始化數(shù)據(jù)段由exec賦初值常稱為C196A. 正文段 B.數(shù)據(jù)段 65. 在存儲空間布局中從低地址到高地址依次分布為A數(shù)據(jù)段bss段堆棧 堆bss段數(shù)據(jù)段正文段堆棧數(shù)據(jù)段 正文段數(shù)據(jù)段bss段棧66. PID為0的交換進程是A20067. 調用e

16、xec可能有變化的是D204A.C.調用exec前后實際組ID 68當waitpid函數(shù)的pid參數(shù)設置為A表示等待任一子進程終止。211A.pid=-1 B.pid=0 C.pid>0 D.pid<-169. fork函數(shù)在父進程中的返回值是B206A.0 70. fork函數(shù)在子進程中的返回值是A71. 進程可以忽略大部分信號,但以下信號中D不能忽略213A.SIGBORT B.SIGILL C.SIGQUIT 72. 調用exec函數(shù)會將原來設置為要捕獲的信號都更改為A214A. 默認73. 可用于在不同主機的進程間通信的技術是D225A. 管道 B.共享內存 C.消息隊列

17、74. 只能在同源進程間通信的技術A224A. 普通管道 75. 不屬于System V IPC通信技術的是AA. 管道 76. 建立從父進程到子進程的管道的方法B225A. 父進程關閉管道的寫端,子進程關閉管道讀端B.父進程關閉管道的讀端,子進程關閉管道的寫端76獲取某個環(huán)境變量值使用函數(shù)AAgetenv Bputenv Csetenv Dunsetenv77文件系統(tǒng)保存在磁盤的BA.引導塊 78Linux文件系統(tǒng)的根目錄的i節(jié)點號為CA. 0 B. 1 79文件描述符的數(shù)據(jù)類型是BA. char B.int 80設置文件偏移量的系統(tǒng)調用是CA. truncateB. syncC . lse

18、ek81下面那個不是lseek第三個參數(shù)的取值CA.SEEK_SETB.SEEK_CUR82可以使用C系統(tǒng)調用獲得符號鏈接所引用文件名稱A.linkB.symlink83獲得工作路徑名稱的系統(tǒng)調用是AA.getcwd84通過文件屬性中的uid獲得文件擁有者名字的系統(tǒng)調用是BA.getcwd85通過文件屬性中的gid獲得文件所屬組名字的系統(tǒng)調用是CA.getcwdB.getpwuidC.getgrgid86根據(jù)文件路徑來改變文件權限使用系統(tǒng)調用是BA.chownB.chmod 一、填空題內核與發(fā)行版的關系:是Linux內核版,而是Linux的發(fā)行版2.Shell是linux系統(tǒng)的一種命令行用戶界

19、面,提供了用戶與操作系統(tǒng)進行交互的接口,本質上是命令解釋器,可為用戶提供個性化的使用環(huán)境。文件屬性測試、字符串測試、數(shù)值測試、邏輯運算。4. 專門執(zhí)行整數(shù)算術運算的命令let所指表達式可執(zhí)行C語言中常見的算術、邏輯、位運算、比較運算等。 5Vi的三中工作模式:插入模式、命令模式、末行模式。6Gcc生成可執(zhí)行文件的四個步驟:預處理、編譯、匯編、鏈接。預處理是對源程序進行頭文件加載和宏展開等操作,由cpp完成;匯編一是產(chǎn)生匯編代碼,二是產(chǎn)生二進制的目標文件,由gcc使用as;生成的多.o文件和使用到的庫文件鏈接成為可被操作系統(tǒng)執(zhí)行的可執(zhí)行程序,使用ld工具,可使用兩類庫文件。7庫分為 靜態(tài)庫 和共

20、享庫 。靜態(tài)庫由多個.o文件組成的集合,文件成員沒有特殊的存在格式,使用“ar”可維護和管理,庫文件后綴為“.a”;共享庫多個.o文件由編譯器按照一定特殊的方式生成。多個可執(zhí)行程序可共享庫文件的代碼段,但不共享數(shù)據(jù)。8命令行參數(shù)是main。函數(shù)的參數(shù)yMain函數(shù)的參數(shù)假設有兩個參數(shù)則第一個參數(shù)代表命令行參數(shù)個數(shù)、第二個參數(shù)代表指向各命令行參數(shù)字符串的指針數(shù)組。9Linux 中日期時間的表示方法有:算術類型、結構體類型、字符串類型。10如果一個C程序的入口表示為mainint argc,char *argv,編譯該程序后的可執(zhí)行程序為a.out,那么在命令“./a.out f foo”后,ma

21、in中的參數(shù)argv1指向的字符串是“-f”。11Linux系統(tǒng)下表示標準輸入、標準輸出和標準錯誤輸出的文件描述符符號表示分別為STDIN_FILENO、STDOUT_FILENO 、STDERR_FILENO,它們的值分別為0、1、2。12數(shù)字635表示的權限使用字母的方式表示為 rwwxr-x、使用符號方式表示為S_IRUSR | S_IWUSR | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH。13系統(tǒng)調用open的功能是打開或創(chuàng)建文件。14 使用open打開文件時有三個標志必須要選擇其一,這三個標志是O_RDONLY、O_WRONLY、O_RDWR。15文

22、件偏移量代表下一次讀或寫的位置。16將文件偏移量市值為當前偏移處之前的4個字節(jié)的維護使用lseekfd,4,SEEK_CUR。17設置打開文件標志O_TRUNC,可以截斷文件為0,使用系統(tǒng)調用truncate可以截斷文件或者加長文件。18如果umask設置為022,則創(chuàng)建一個新文件夾數(shù)字表示的權限為644、創(chuàng)建一個新目錄的權限為755。19如果umask設置為024,則創(chuàng)建一個新文件夾數(shù)字表示的權限為642、創(chuàng)建一個新目錄的權限為753。20使用系統(tǒng)調用umask可以設置和得到文件模式的屏蔽字。21創(chuàng)建硬鏈接使用系統(tǒng)調用link,創(chuàng)建符號鏈接使用系統(tǒng)調用symlink。22獲得工作路徑名稱的系

23、統(tǒng)調用是getcwd。23可以使用stat或fstat或lstat系統(tǒng)調用顯示文件屬性信息。24chmod,chown,utime都可以修改文件i節(jié)點信息,其中chmod的功能是更改文件權限、chown的功能是更改文件所有者和所屬組、utime的功能是更改文件訪問時間和修改時間。25假設實現(xiàn)將標準輸出重定向到文件描述符為6對應的文件上,則應使用語句dup2(6,1)。26系統(tǒng)調用Unlink的作用是刪除目錄項,這里的目錄項是指文件名和文件i節(jié)點的對應關系。27打開目錄使用DIR *opendir(const char *name)系統(tǒng)調用,關閉目錄使用 int closedir(DIR *di

24、r)系統(tǒng)調用,讀取目錄內容使用struct dirent *readdir(DIR *dir)系統(tǒng)調用。28chdir系統(tǒng)調用的功能是改變當前目錄。29創(chuàng)建目錄使用int mkdir(const char *pathname, mode_t mode)系統(tǒng)調用、刪除目錄使用int rmdir(const char *pathname)系統(tǒng)調用。30.popen函數(shù)實現(xiàn)的操作:創(chuàng)建一個管道,fork一個子進程,然后關閉管道的不使用端,在子進程中exexc一個shell以執(zhí)行一條命令,然后等到命令的終止。31.使用kill發(fā)送信號時,發(fā)送方進程應具有相應的權限:接受和發(fā)送進程的所有者相同,發(fā)送進程

25、的所有者是超級用戶三、簡答題1系統(tǒng)調用、庫函數(shù)的區(qū)別和練習從用戶角度觀察,系統(tǒng)調用和庫函數(shù)都以C函數(shù)形式出現(xiàn),提供應用戶一種功能實現(xiàn)的接口,需要用戶輸入指定的參數(shù),調用結束得到指定的返回值。從實現(xiàn)者角度觀察,庫函數(shù)是在系統(tǒng)調用上層的函數(shù),庫函數(shù)一般指程序員可以使用的通用函數(shù)。系統(tǒng)調用由兩部分組成:1核心函數(shù):是實現(xiàn)系統(tǒng)調用功能的代碼,作為操作系統(tǒng)的核心駐留在內存中,是一種共享代碼。運行在核心態(tài)。2接口函數(shù):是提供應應用程序的API,以庫函數(shù)的形式存在于Linux的中,該庫中存放了所有系統(tǒng)調用的接口函數(shù)的目標代碼,用匯編語言書寫。其主要功能是把系統(tǒng)調用號,入口參數(shù)地址傳給相應的核心函數(shù),并使用戶

26、態(tài)下運行的應用程序陷入核心態(tài)。4完成如下命令1新建用戶tom 和用戶組student#useradd tom#passwd tom#groupadd student2新建文件file#touch file3將文件file 改名為test,然后將test拷貝到/home#mv file test#cp test /home4將/home/test文件的擁有著修改為tom,將文件所屬組該為student#chown tom:student /home/test5靜態(tài)庫和共享庫的區(qū)別1靜態(tài)庫的代碼在編譯時就已連接到開發(fā)人員開發(fā)的應用程序中。2共享庫只是在程序開始運行時才載入,在編譯時,只是簡單地指定

27、需要使用的庫函數(shù)。3靜態(tài)庫文件以.a結尾,共享庫文件以.so結尾。 6Linux文件類型主要有哪七類?常規(guī)文件、目錄文件、字符設備文件、塊設備文件、管道文件、鏈接文件、套接字文件7簡述文件、i節(jié)點、文件名、目錄之間的關系每個存在磁盤上的文件都由i節(jié)點和數(shù)據(jù)塊兩部分組成,i節(jié)點和文件一一對應,一個i節(jié)點可以對應多個文件名,文件名和i節(jié)點的對應關系叫做文件的硬鏈接,文件名和i節(jié)點的對應關系保存在目錄文件中。8什么是文件描述符?1一個非負整數(shù),內核以此來標識一個特定進程正在操作的文件。2012代表三個標準的文件描述符,分別為標準輸入、標準輸出、標準錯誤輸出9使用符號方式表示rwxrwxrwx權限S_

28、IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRP|S_IROTH| S_IWOTH|S_IXOTH10寫出open一下6種打開標志:只讀、只寫、讀寫、追加、文件不存在創(chuàng)建、截斷為0O_RDONLY O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC 11讀程序,寫出執(zhí)行結果并解釋得到該結果的原因main()int fd1,fd2;fd1=open(“/etc/passwd”,O_RDONLY);fd2=open(“/etc/passwd”,O_RDWR);printf(“fd1=%d,fd2=%dn”,fd1,fd2);c

29、lose(fd1);close(fd2);結果:fd1=3 fd2=4原因:open返回的文件描述符為最小可用的非負整數(shù),012是三個標準的文件描述符默認已經(jīng)被占用,所以第一個open的返回值為3,第二個open返回的是4。12答復stat、fstat、latat三個系統(tǒng)調用的區(qū)別stat根據(jù)路徑獲得文件元數(shù)據(jù)信息fstat根據(jù)文件描述符獲得文件元數(shù)據(jù)信息前兩者如果遇到符號鏈接文件則會一直引用至非符號鏈接文件lstat獲得符號鏈接文件本身的文件元數(shù)據(jù)信息12dup和dup2的區(qū)別和聯(lián)系聯(lián)系:dup與dup2都用來將新文件描述符指向原來文件描述符指向的打開文件描述。區(qū)別:dup返回的新文件描述符

30、為最小可用的文件描述符,dup2返回的新文件描述符可以通過第二個參數(shù)指定。13硬鏈接和符號鏈接的區(qū)別1命令ln 原文件硬鏈接文件不能對目錄創(chuàng)建硬鏈接ln s 原文件/目錄符號鏈接文件2是否新增文件:硬鏈接不增文件,符號鏈接增加文件。3刪除原文件/目錄硬鏈接:對應i節(jié)點鏈接數(shù)-1。符號鏈接:符號鏈接文件失效。 4刪除鏈接文件刪除硬鏈接文件,使對應i節(jié)點的鏈接數(shù)-1。刪除符號鏈接文件,對原文件/目錄無任何影響5是否跨文件系統(tǒng):硬鏈接不可以,符號鏈接可以14fork與vfork區(qū)別?1fork創(chuàng)建的子進程復制父進程的整個地址空間,vfork不創(chuàng)建這一副本,子進程借用父進程的地址空間,直到其調用exe

31、c族函數(shù)或終止;2fork創(chuàng)建的子進程和父進程相互獨立地運行,而vfork創(chuàng)建子進程后掛起父進程,直到子進程終止或調用exec族函數(shù)。使用kill發(fā)送信號時,發(fā)送方進程應具有相應的權限:接受和發(fā)送進程的所有者相同,發(fā)送進程的所有者是超級用戶。15閱讀以下代碼,假設execlp調用成功的話,“Done!”會打印輸出嗎?為什么?#include<stdio.h>int main()printf(“Running ps with execlpn”);execlp(“ps”,”ps”,”-af”,0);printf(“Done!n”);exit(0);不會輸出“Done!”。原因:執(zhí)行ex

32、eclp(“ps”,”ps”,”-af”,0)調用成功后,當前進程的地址空間被新的程序ps所替代,將執(zhí)行“ps -af”16試寫出以下程序段的運行結果,并解釋原因int x=0,int y=0;void thread1(void)printf(“This is pthread1.the sentence 1n”);y=7;sleep(1);printf(“This is pthread1.the sentence 2n”);x=x+y;void thread2(void)printf(“This is pthread1.the sentence 1n”);x=4;sleep(1);printf

33、(“This is pthread1.the sentence 1n”);y=8+y;void main(void)pthread_t id1,id2;pthread_create(&id1,NULL,(void *)thread1,NULL);pthread_ create(&id2,NULL,(void *)thread2,NULL);pthread_join(id1,NULL);pthread_ join(id2,NULL);printf(“x=%d,y=%dn”,x,y);答案:This is pthread1.the sentense 1This is pthread

34、2.the sentense 1This is pthread1.the sentense 2This is pthread2.the sentense 2x=11,y=15原因:1線程1先運行,線程2后運行。線程1執(zhí)行sleep(1);后阻塞,線程2繼續(xù)執(zhí)行,線程2執(zhí)行到sleep(1);時線程2阻塞,線程1阻塞結束繼續(xù)執(zhí)行,線程1執(zhí)行結束后線程繼續(xù)執(zhí)行到結束。2線程1和線程2共享進程的數(shù)據(jù)段,因此共享變量x,y。17進程間通信的六種方式是什么?簡述他們的通信原理?1信號:用于通知接收進程有某種事件發(fā)生。2管道:連接一個進程的輸出至另一個進程的輸入的一種方法。3信號量:一個計數(shù)器,用來記錄對

35、某個資源的使用情況。4共享內存:允許多個進程訪問同一塊內存空間。5消息隊列:消息的鏈表,鏈表中每個節(jié)點包括消息類型和正文兩部分。6套接字:在網(wǎng)絡上主機間進程進行通信的方式。18PIPE與FIFO的區(qū)別與聯(lián)系PIPE為未命名管道,F(xiàn)IFO為命名管道。聯(lián)系:PIPE和FIFO都是單向傳輸,一端為讀,另一端為寫。區(qū)別:PIPE只能在有親緣關系的進程中使用,如父子進程;FIFO有名字,所以只要知道該名字,無關進程之間也可以使用。19書名產(chǎn)生信號的幾種方式?1用戶操作。如鍵盤操作Ctrl-C,最終使得內核產(chǎn)生信號SIGINT。2進程執(zhí)行出錯。如浮點數(shù)溢出,內核也會產(chǎn)生信號。3進程執(zhí)行某個系統(tǒng)調用。如調用

36、kill向某個進程或進程組發(fā)送信號。20說明信號傳遞的過程。1生成generating。內核要更新目標進程的數(shù)據(jù)結構,表示一個新的信號已經(jīng)被發(fā)送給此進程。此時,進程并沒有對信號做出任何響應。2傳遞delivery。強迫目標進程對信號做出響應。四、編程題1向文件f1中寫入“hello world!”,然后再將f1中的內容讀出并顯示在屏幕上。注意必要的錯誤判斷#include <unistd.h>#include <sys/stat.h>#include <sys/fcntl.h>int main()int fd;char buf113="hello

37、world!"char buf212;int num;fd = open( "f1",O_RDWR| O_CREAT | O_TRUNC, 0644);if(fd=-1) perror("f1 not open");exit(1);num=write(fd,buf1,sizeof(buf1)-1); if(num!=(sizeof(buf1)-1) printf("write less than wantn");lseek(fd,0,SEEK_SET);num=read(fd,buf2,12);if(num!=12)prin

38、tf("read less than 12n");write(1,buf2,12);close(fd);2向文件f2中寫入“aabbccddee”,然后將偏移量移到絕對值偏移為4的位置處,讀6個字符,并將結果顯示在屏幕上#include <unistd.h>#include <sys/stat.h>#include <sys/fcntl.h>int main()int fd;char buf111="aabbccddee"char buf210;int num;fd = open( "f2",O_R

39、DWR| O_CREAT | O_TRUNC, 0644);if(fd=-1) perror("f2 not open");exit(1);num=write(fd,buf1,sizeof(buf1)-1); if(num!=(sizeof(buf1)-1)printf("write less than wantn");lseek(fd,4,SEEK_SET);num=read(fd,buf2,6);if(num!=6)printf("read less than 6n");write(1,buf2,6);close(fd);3向文件

40、f3中寫入“aabbccddeeffgghh”,然后將文件截短后的文件內容讀出并顯示在屏幕上#include <unistd.h>#include <sys/stat.h>#include <sys/fcntl.h>int main()int fd;char buf117="aabbccddeeffgghh"char buf28;int num;fd = open( "f3",O_RDWR| O_CREAT | O_TRUNC, 0644);if(fd=-1) perror("f3 not open"

41、;);exit(1);num=write(fd,buf1,sizeof(buf1)-1); if(num!=(sizeof(buf1)-1)printf("write less than wantn");lseek(fd,0,SEEK_SET);ftruncate(fd,8);num=read(fd,buf2,8);if(num!=8)printf("read less than 8n");write(1,buf2,8);close(fd);4實現(xiàn)“cat文件名”顯示文件內容#include <fcntl.h>main(int argc,ch

42、ar *argv) int fd; int num; char buf10; if(argc!=2) printf("miss filenamen"); exit(1); fd=open(argv1,O_RDONLY); if(fd=-1) perror("error open"); exit(1); while(num=read(fd,buf,10)!=0) write(1,buf,num); close(fd);5實現(xiàn)“cp 原文件 目標文件”#include <sys/stat.h>#include <fcntl.h>mai

43、n(int argc,char *argv) int from,to; int num; char buf10; if(argc!=3) printf("argument errorn"); exit(1); from=open(argv1,O_RDONLY); to=open(argv2,O_WRONLY|O_CREAT|O_TRUNC,0644);num=read(from,buf,10);while(num!=0)write(to,buf,num);num=read(from,buf,10); close(from); close(to);6編寫程序pro3.c,將字

44、符串“hello world”通過輸出重定向方式寫入文件f1中#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <sys/stat.h>#include <sys/types.h>main()int fd;if(fd=open("f1",O_WRONLY|O_CREAT,0644)=-1)perror("open fail");if(dup2(fd,1)=-1)perror("Redirect failed&

45、quot;);printf("Hello worldn");close(fd);7使用fork創(chuàng)建進程,在子進程中打印“I am the child”和子進程pid,在父進程中打印“I am the father”和父進程pid#include <sys/types.h>#include <stdlib.h>#include <stdio.h>int main() pid_t pid; pid = fork(); if(pid < 0) perror("fork"); exit(1); else if(pid =

46、 0) printf("I am the childn"); else printf("I am the fathern"); exit(0);8創(chuàng)建子進程,在子進程中執(zhí)行“ps -A”命令,父進程等待子進程結束后打印“child over”及所處理的子進程進程號#include <sys/types.h>#include <stdlib.h>main()pid_t pid,cpid;int i;char* args64; args0=”ps”; args1=”-A”; args2=NULL; pid=fork();if(pid&

47、lt;0)perror(“fork”);exit(1);else if(pid=0)execvp(args0,args);exit(0);elsecpid=wait(NULL);printf(“child over! cpid=%dn”,cpid);9編寫程序處理SIGINT信號,當程序接收到SIGINT信號后輸出“SIGINT is caught”#include <stdio.h>#include <signal.h>void signal_handler(int signum) switch(signum) case SIGINT: printf("SI

48、GINT is caught!n"); break; int main() signal(SIGINT,signal_handler); pause(); return 0;10使用PIPE時限父子進程向子進程發(fā)送1234567890,子進程接收并顯示#include <sys/types.h>#include <stdio.h>main() int pfd2; char buf32; pid_t pid; pipe(pfd); if(pid=fork()<0) perror("fork"); else if(pid>0) cl

49、ose(pfd0); write(pfd1,"1234567890",11); else close(pfd1); read(pfd0,buf,11); printf("child read:%sn",buf); 一、單項選擇題 1、Linux操作系統(tǒng)內核創(chuàng)始人是 C ABill Gates BRichard Stallman 2、以下哪種不是Linux的Shell類型 C Abash Bksh Crsh Dcsh3、下面關于Shell的說法,不正確的選項是 B 。A、一種命令語言解釋器 B、一種和C類似的程序語言C、操作系統(tǒng)的外殼 D、用戶與Linux

50、內核之間的接口程序4、hda3表示 B 。A、IDE0接口上的從盤 B、IDE0接口上主盤的第三個分區(qū) C、IDE0接口上的第三個主分區(qū) D、IDE0接口上的第三個邏輯分區(qū) 5、一般情況下,Swap的大小建議是 C 。A、50M B、100M C、內存大小的2倍 D、150M6、Linux下的cd命令可以改變用戶的當前目錄,當用戶鍵入cd并按回車后, A 。A、當前目錄改為用戶主目錄 B、當前目錄改為根目錄C、當前目錄沒有變 D、當前用戶改為上一級目錄7、在字符界面下啟動X-Window的命令是 BA、start B、startx C、begin D、beginx二、填空題將正確答案填在每題的空格內。此題共40空,每空1分,共40分)1、安裝Linux時經(jīng)常建議初學者將磁盤分兩個分區(qū),分別是根分區(qū)和SWAP交換分區(qū)。2、Linux的內核版本分為_穩(wěn)定版_和開發(fā)版,其版本號通常由3個數(shù)字組成,并表示為X、Y、Z的形式,X代表_主版本號_,Y代表_次版本號_,Z代表_末版本號_。其中,Y如果是偶數(shù),則代表這個內核版本是_穩(wěn)定版_,可以公開發(fā)行。3、如果將硬盤接在第一個IDE接口的從硬盤上,在Linux系統(tǒng)中這個硬盤代號是_hdb_。這個硬盤第二個邏輯分區(qū)的代號是_hdb6_。4、在Windows與Linux并存的電腦中,安全刪除Lin

溫馨提示

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

評論

0/150

提交評論