(完整word版)04-IO進(jìn)程測(cè)試題(含答案)_第1頁(yè)
(完整word版)04-IO進(jìn)程測(cè)試題(含答案)_第2頁(yè)
(完整word版)04-IO進(jìn)程測(cè)試題(含答案)_第3頁(yè)
(完整word版)04-IO進(jìn)程測(cè)試題(含答案)_第4頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一、選擇題 (每題 2分,共 40分 )1.下列哪種打開(kāi)文件的方式不能修改文件已有的內(nèi)容( B )A r+BrC w+Da+2.以下哪種不是進(jìn)程的狀態(tài)( B )A 運(yùn)行態(tài)B鎖定態(tài)C 睡眠態(tài)D停止態(tài)3. 以讀寫(xiě)方式打開(kāi)一個(gè)已存在的標(biāo)準(zhǔn)I/O 流時(shí)應(yīng)指定哪個(gè) mode 參數(shù) ( B )A rB r+C w+Da+4. fork() 的返回值不可能是A -1( C )B 0C 1D大于10000的正整數(shù)5. 常用來(lái)進(jìn)行多任務(wù)同步的機(jī)制是( B )A 管道B信號(hào)量C信號(hào)(異步通信方式, 中斷機(jī)制的模擬)D共享內(nèi)存 (本身不提供同步機(jī)制,可自行添加信號(hào)量實(shí)現(xiàn)同步 )信號(hào)量:解決進(jìn)程線程之間的同步與互斥問(wèn)

2、題的一種通信機(jī)制:信號(hào)量變量 和這個(gè)變量的等待隊(duì)列 、兩個(gè)原子操作(PV ).6. 下列哪個(gè)函數(shù)無(wú)法傳遞進(jìn)程結(jié)束時(shí)的狀態(tài)( A )AcloseB exitC _exitD returnvoid exit( int status)7. 以下哪種用法可以等待接收進(jìn)程號(hào)為 A waitpid(pid, &status, 0) C waitpid(-1, &status, 0)pid 的子進(jìn)程的退出狀態(tài)(A ) P59Bwaitpid(pid, &status, WNOHANG)Dwaitpid(-1, &status, WNOHANG)WNOHANG:子進(jìn)程沒(méi)結(jié)束,不

3、阻塞立即返回,返回值為0。0:阻塞父進(jìn)程,直到子進(jìn)程退出。8. What kind of IPC has the highest efficiency? ( B )A semaphoreB sharedmemoryC fifoD message queueE signal9. 下列對(duì)無(wú)名管道描述錯(cuò)誤的是( C )A 半雙工的通信模式B 有固定的讀端和寫(xiě)端C 可以使用 lseek 函數(shù)D 只存在于內(nèi)存中10.下列對(duì)于有名管道描述錯(cuò)誤的是( D )A 可以用于互不相關(guān)的進(jìn)程間B 通過(guò)路徑名來(lái)打開(kāi)有名管道C 在文件系統(tǒng)中可見(jiàn)D 管道內(nèi)容保存在磁盤(pán)上11. 下列不屬于用戶(hù)進(jìn)程對(duì)信號(hào)的響應(yīng)方式的是( B

4、 )(A忽略信號(hào)B保存信號(hào)1 終止SIGINTCtrl+c ,SIGINTQUITC捕捉信號(hào)。2 暫停DSIGSTOP 。按缺省方式處理3 停止 SIGTSTPCtrl+z. 。 4 忽略SIGCHILD)12. 不能被用戶(hù)進(jìn)程屏蔽的信號(hào)是( B )A SIGINTB SIGSTOP /SIGKILLC SIGQUITD SIGILL非法指令時(shí)發(fā)出13. 下列哪個(gè)是不帶緩存的 ( C )A stdinB stdoutC stderrD都不是14. 下列不屬于 IPC 對(duì)象的是 (A )A管道B共享內(nèi)存C消息隊(duì)列D信號(hào)燈IPC對(duì)象通過(guò)它的標(biāo)識(shí)符來(lái)引用和訪問(wèn),這個(gè)標(biāo)識(shí)符是一個(gè)非負(fù)整數(shù),它唯一的標(biāo)識(shí)

5、了一個(gè) IPC 對(duì)象,這個(gè) IPC 對(duì)象可以是消息隊(duì)列或信號(hào)量或共享存儲(chǔ)器中的任意一種類(lèi)型15. 如果鍵盤(pán)輸入為 abcdef,程序如下所示,打印結(jié)果應(yīng)該是( A )charbuffer6;fgets(buffer, 6, stdin);/遇到 n 或 讀取了 size 1 個(gè)字符后返回.printf( “%s”, buffer);AabcdeB abcdefC abcdef后出現(xiàn)亂碼D段錯(cuò)誤16. 用 open( )創(chuàng)建新文件時(shí),若該文件存在則可以返回錯(cuò)誤信息的參數(shù)是( B )AO_CREAT(創(chuàng)建新文件)BO_EXCLCO_TRUNC( 刪除原有數(shù)據(jù))D O_NOCTTYint open(

6、 const char *pathname, int flags, int perms)17. 下列不是用戶(hù)進(jìn)程的組成部分的是( D )A正文段B用戶(hù)數(shù)據(jù)段C系統(tǒng)數(shù)據(jù)段Delf 段進(jìn)程是由進(jìn)程控制塊、程序段、數(shù)據(jù)段三部分組成18. 以下哪種方法無(wú)法查看進(jìn)程的信息( C )A psB查看 /proc 目錄C killD topLinux 系統(tǒng)中每一個(gè)進(jìn)程都會(huì)有/proc 文件系統(tǒng)下的與之對(duì)應(yīng)的一個(gè)目錄放在 /proc/1 目錄下 )。( init進(jìn)程信息存19. 默認(rèn)情況下,不會(huì)終止進(jìn)程的信號(hào)是( D )A SIGINTB SIGKILLC SIGALRMDSIGCHLD20. fread()

7、返回值的含義是( B )A讀取的字節(jié)數(shù)B讀取的對(duì)象數(shù)C緩沖區(qū)的首地址D 0size_t fread (void *ptr, size_t size, size_t nmemb, FILE *stream);二、簡(jiǎn)答題 (30 分 )1. 請(qǐng)描述進(jìn)程和程序的區(qū)別?(5 分)進(jìn)程和程序的區(qū)別程序是 靜態(tài) 的,它是一些保存在 磁盤(pán) 上的指令的有序集合, 沒(méi)有任何執(zhí)行的概念進(jìn)程是一個(gè) 動(dòng)態(tài) 的概念,它是程序 執(zhí)行的過(guò)程 ,包括創(chuàng)建、調(diào)度和消亡進(jìn)程是一個(gè)獨(dú)立的 可調(diào)度的任務(wù)進(jìn)程是一個(gè)抽象實(shí)體。當(dāng)系統(tǒng)在執(zhí)行某個(gè)程序時(shí),分配和釋放 的各種資源進(jìn)程是一個(gè)程序的一次執(zhí)行的過(guò)程進(jìn)程是程序執(zhí)行和資源管理的最小單位2

8、.指出靜態(tài)庫(kù)和共享庫(kù)的區(qū)別(使用方法,對(duì)程序的影響) ( 5 分)靜態(tài)庫(kù)在程序 編譯時(shí)會(huì)被連接到目標(biāo)代碼中,程序 運(yùn)行時(shí)將不再需要該靜態(tài)庫(kù),因此體積較大 。動(dòng)態(tài)庫(kù)在程序編譯時(shí)并不會(huì)被連接 到目標(biāo)代碼中, 而是在程序運(yùn)行是才被載入,因此在程序 運(yùn)行時(shí)還需要?jiǎng)討B(tài)庫(kù)存在,因此代碼 體積較小 。3. 寫(xiě)出設(shè)置信號(hào)處理函數(shù)和用戶(hù)定義的信號(hào)處理函數(shù)的原型(5 分)void (*signal(int signum, void (*handler)(int)(int);typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sigha

9、ndler_t handler); void driver_handler(int signo);void (*handler)(int );handler,一個(gè)指向函數(shù)的指針,該函數(shù)有一個(gè)int參數(shù),返回 void 。T *signal(intsigno, P), P = void (*handler)(int ) ;signal ,一個(gè)函數(shù),該函數(shù)有2 個(gè)參數(shù)( signo, P),返回類(lèi)型 T 的指針。void (T) (int) , T = signal(int signo, P)T,一個(gè)函數(shù),該函數(shù)有一個(gè)int參數(shù),返回 void。4. 程序代碼如下,請(qǐng)按執(zhí)行順序?qū)懗鲚敵鼋Y(jié)果(10分

10、)int main() pid_t pid1,pid2;if(pid1=fork() = = 0)/ 子進(jìn)程處理程序sleep(3);printf( “info1 from child process_1n ”);exit(0);printf( “info2 from child process_1n ”);elseif(pid2=fork() = = 0)/子進(jìn)程 2sleep(1);printf( “info1 from child process_2n ”);exit(0);elsewait(NULL);wait(NULL);printf( “info1 from parent proc

11、essn ”);printf( “info2 from parent process ”);_exit(0);info1 from child process_2info1 from child process_1info1 from parent process5. 列出任意四種進(jìn)程間通信的方式(5 分)傳統(tǒng)的進(jìn)程間通信方式無(wú)名管道 (pipe) 、有名管道 (fifo) 和信號(hào) (signal)System V IPC 對(duì)象共享內(nèi)存 (share memory)、消息隊(duì)列 (message queue)和信號(hào)燈 (semaphore)BSD套接字 (socket)三、綜合題 (30 分 )

12、1. 指出創(chuàng)建守護(hù)進(jìn)程的步驟 (5 分) P651)創(chuàng)建子進(jìn)程,父進(jìn)程退出fork() , exit()2)在子進(jìn)程中創(chuàng)建新會(huì)話(huà)setsid()3)改變當(dāng)前目錄為根目錄chdir()4)重設(shè)文件權(quán)限掩碼umask( 0)5)關(guān)閉文件描述符close()2.請(qǐng)畫(huà)出 Linux 中進(jìn)程的狀態(tài)切換圖(5 分 )3. 用文件 IO 分別實(shí)現(xiàn)標(biāo)準(zhǔn) IO 中的 (r, r+, w, w+, a, a+), 文件名由 argv1 傳入程序 .(O_RDONL Y, O_WRONL Y, O_RDWR, O_CREA T, O_TRUNC, O_APPEND)(10分 )int open (const cha

13、r *pathname, int flags, int perms);r:open(argv1,O_RDONL Y ) ;r+:open (argv1,O_RDWR);w:open(argv1,O_WRONL Y | O_CREAT | O_TRUNC,0666);w+:open(argv1,O_RDWR | O_CREAT | O_TRUNC,0666);a:open(argv1,O_WRONL Y | O_CREAT | O_APPEND,0666);a+:open(argv1,O_RDWR | O_CREAT | O_APPEND,0666);4.編寫(xiě)程序?qū)崿F(xiàn)如下功能(10 分 ):re

14、ader.c從 argv1 所指定的文件中讀取內(nèi)容,依次寫(xiě)到管道/home/linux/myfifo中writer.c從管道 /home/linux/myfifo中讀取內(nèi)容,寫(xiě)到argv1 所指定的文件中并保存代碼中可省略頭文件,/home/linux/myfifo無(wú)需創(chuàng)建Read.cint main(int argc, const char *argv)int fd,fd_src;char buf32;int bytes;if(argc < 2)printf("Usage %s src_filen",argv0);return -1;if(fd = open(&qu

15、ot;/home/linux/myfifo",O_WRONLY) ) < 0)perror("fail to open");return -1;if( fd_src = open(argv1,O_RDONLY) < 0)perror("fail to open");return -1;while( bytes = read(fd_src,buf,32) ) > 0)write(fd,buf,bytes);close(fd);close(fd_src);return 0;Write.cint main(int argc, const char *argv)int fd,fd_dest;char buf32;int bytes;if(argc < 2)printf("Usage %s dest_filen",argv0);return -1;if(fd = open("/home/linux/myfifo",O_RDONLY) < 0)perror(&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論