版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)北京化工大學(xué)北方學(xué)院課程設(shè)計(jì)報(bào)告課程名稱 操作系統(tǒng)課程設(shè)計(jì) 設(shè)計(jì)題目 Linux C程序設(shè)計(jì) 專業(yè)、班級(jí) 學(xué) 號(hào) 姓 名 指導(dǎo)教師 設(shè)計(jì)時(shí)間 2015.10.192015.11.06 2015年 11 月 6 日引言(簡(jiǎn)要說(shuō)明設(shè)計(jì)題目的目的、意義、內(nèi)容、主要任務(wù)等)目的本次系統(tǒng)軟件課程設(shè)計(jì)的主要目的有兩個(gè):一方面是分析設(shè)計(jì)linux源代碼,另一方面是進(jìn)行系統(tǒng)級(jí)的程序設(shè)計(jì)。意義:通過(guò)本課題的畢業(yè)設(shè)計(jì),熟悉了關(guān)于linux下C語(yǔ)言的系統(tǒng)軟件程序設(shè)計(jì),可以比較深入的了解和掌握
2、基本gcc,vim等編程軟件的使用和對(duì)makefile文件的使用。掌握進(jìn)程間的通信方式,進(jìn)程控制,文件操作的方式。本報(bào)告就系統(tǒng)的開(kāi)發(fā)過(guò)程做了詳細(xì)的介紹,并對(duì)系統(tǒng)的原理、總體設(shè)計(jì)等方面做了深入細(xì)致的討論。內(nèi)容采用結(jié)構(gòu)化分析和設(shè)計(jì)方法,運(yùn)用linux C開(kāi)發(fā)實(shí)現(xiàn)本次操作系統(tǒng)設(shè)計(jì)的4個(gè)任務(wù)。主要任務(wù)1、設(shè)計(jì)一個(gè)程序,要求創(chuàng)建一個(gè)管道,復(fù)制進(jìn)程,父進(jìn)程往管道中寫(xiě)入字符串,子進(jìn)程從管道中讀取并輸出字符串。2、設(shè)計(jì)一個(gè)程序,要求復(fù)制進(jìn)程,子進(jìn)程顯示自己的進(jìn)程號(hào)(PID)后暫停一段時(shí)間,父進(jìn)程等待子進(jìn)程正常結(jié)束,打印顯示等待的進(jìn)程號(hào)(PID)和等待的進(jìn)程退出狀態(tài)。3、用管道實(shí)現(xiàn)ls|sort命令功能。4、設(shè)
3、計(jì)一個(gè)程序,要求用戶進(jìn)程復(fù)制出一個(gè)子進(jìn)程,父進(jìn)程向子進(jìn)程發(fā)出信號(hào),子進(jìn)程收到此信號(hào),結(jié)束子進(jìn)程。正文(課程設(shè)計(jì)的主要內(nèi)容,包括實(shí)驗(yàn)與觀測(cè)方法和結(jié)果、儀器設(shè)備、計(jì)算方法、編程原理、數(shù)據(jù)處理、設(shè)計(jì)說(shuō)明與依據(jù)、加工整理和圖表、形成的論點(diǎn)和導(dǎo)出的結(jié)論等。正文內(nèi)容必須實(shí)事求是、客觀真切、準(zhǔn)確完備、合乎邏輯、層次分明、語(yǔ)言流暢、結(jié)構(gòu)嚴(yán)謹(jǐn),符合各學(xué)科、專業(yè)的有關(guān)要求。)1. 需求分許(1)、設(shè)計(jì)一個(gè)程序,要求創(chuàng)建一個(gè)管道,復(fù)制進(jìn)程,父進(jìn)程往管道中寫(xiě)入字符串,子進(jìn)程從管道中讀取并輸出字符串。(2)、設(shè)計(jì)一個(gè)程序,要求復(fù)制進(jìn)程,子進(jìn)程顯示自己的進(jìn)程號(hào)(PID)后暫停一段時(shí)間,父進(jìn)程等待子進(jìn)程正常結(jié)束,打印顯示等
4、待的進(jìn)程號(hào)(PID)和等待的進(jìn)程退出狀態(tài)。(3)、用管道實(shí)現(xiàn)ls|sort命令功能。(4)、設(shè)計(jì)一個(gè)程序,要求用戶進(jìn)程復(fù)制出一個(gè)子進(jìn)程,父進(jìn)程向子進(jìn)程發(fā)出信號(hào),子進(jìn)程收到此信號(hào),結(jié)束子進(jìn)程。2. 系統(tǒng)設(shè)計(jì)(1) 第一個(gè)任務(wù)進(jìn)程間通信程序結(jié)構(gòu)及主要過(guò)程 本程序運(yùn)用了順序結(jié)構(gòu),選擇結(jié)構(gòu)等c語(yǔ)言主要結(jié)構(gòu),指針、函數(shù)調(diào)用等知識(shí),該程序覆蓋了linuxc語(yǔ)言所學(xué)的除結(jié)構(gòu)體外的大部分知識(shí)。本程序結(jié)構(gòu)和過(guò)程思路: 利用fork函數(shù)復(fù)制進(jìn)程,父進(jìn)程往管道中寫(xiě)入字符串,子進(jìn)程從管道中讀取并輸出字符串(2) 第二個(gè)任務(wù)進(jìn)程控制程序結(jié)構(gòu)及主要過(guò)程本程序運(yùn)用了順序結(jié)構(gòu),選擇結(jié)構(gòu)等c語(yǔ)言主要結(jié)構(gòu),指針、函數(shù)調(diào)用等知識(shí),
5、該程序覆蓋了linuxc語(yǔ)言所學(xué)的除結(jié)構(gòu)體外的大部分知識(shí)。本程序結(jié)構(gòu)和過(guò)程思路如下:利用fork函數(shù)復(fù)制進(jìn)程,再利用getpid函數(shù)獲取子進(jìn)程的進(jìn)程號(hào),同時(shí)也利用了wait函數(shù)來(lái)等待進(jìn)程。(3) 第三個(gè)任務(wù)結(jié)構(gòu)及主要過(guò)程本程序運(yùn)用了順序結(jié)構(gòu),選擇結(jié)構(gòu)等c語(yǔ)言主要結(jié)構(gòu),指針、函數(shù)調(diào)用等知識(shí),該程序覆蓋了linuxc語(yǔ)言所學(xué)的除結(jié)構(gòu)體外的大部分知識(shí)。本程序結(jié)構(gòu)和過(guò)程思路:利用fork函數(shù)復(fù)制進(jìn)程,調(diào)用run_ls和run_sort函數(shù)實(shí)現(xiàn)linux下ls|sort命令,對(duì)當(dāng)前目錄進(jìn)行操作。(4) 第四個(gè)任務(wù)進(jìn)程控制程序結(jié)構(gòu)及主要過(guò)程本程序運(yùn)用了順序結(jié)構(gòu),選擇結(jié)構(gòu)等c語(yǔ)言主要結(jié)構(gòu),指針、函數(shù)調(diào)用等知
6、識(shí),該程序覆蓋了linuxc語(yǔ)言所學(xué)的除結(jié)構(gòu)體外的大部分知識(shí)。本程序結(jié)構(gòu)和過(guò)程思路:利用fork函數(shù)復(fù)制進(jìn)程,父進(jìn)程打印進(jìn)程信息并且signol函數(shù)通知子進(jìn)程,子進(jìn)程收到父進(jìn)程的信號(hào)后打印結(jié)束進(jìn)程的提示然后結(jié)束進(jìn)程,打印信息。3. 系統(tǒng)實(shí)現(xiàn)(1)進(jìn)程間通信實(shí)現(xiàn)源代碼:#include #include #include #include int main(int argc,char *argv) int pd2;/*用于保存管道文件描述符*/ char out80,str=hello flami!;/*str是要寫(xiě)入的字符串,out用于保存從管道讀取的字符串*/ assert(pipe(pd)
7、!=-1);/*斷言用于確定pipe()函數(shù)執(zhí)行成功,如果管道創(chuàng)建失敗,則pipe()返回-1*/ if (!fork() write(pd1,str,strlen(str);/*父線程將字符串寫(xiě)入管道*/ else read(pd0,out,strlen(str);/*在子線程中從管道中讀取子進(jìn)程寫(xiě)入的字符串*/ printf(%sn,out);/*子線程中輸出。*/ return 0;(2)進(jìn)程控制實(shí)現(xiàn)源代碼:#include#include#include#include#includeint main() pid_t pid,vpid;int status,i;pid=fork();i
8、f(pid=0) printf(子進(jìn)程pid:%dn,getpid();sleep(2);exit(3);elsevpid=wait(&status);i=WEXITSTATUS(status); printf(父進(jìn)程pid:%d,退出狀態(tài)%dn,vpid,i);(3)管道實(shí)現(xiàn)ls|sort命令#include int fd2; void run_ls() close(fd0); close(fd1); char *argv=ls,NULL,NULL;/傳遞給執(zhí)行文件的參數(shù)數(shù)組,這里包含執(zhí)行文件的參數(shù) char *envp=0,NULL;/傳遞給執(zhí)行文件新的環(huán)境變量數(shù)組 execve(/bin
9、/ls,argv,envp); void run_sort() close(fd0); close(fd1); char *argv=sort,NULL,NULL;/傳遞給執(zhí)行文件的參數(shù)數(shù)組,這里包含執(zhí)行文件的參數(shù) char *envp=0,NULL;/傳遞給執(zhí)行文件新的環(huán)境變量數(shù)組 execve(/usr/bin/sort, argv, envp); int main() pipe(fd); if (fork() 0) dup2(fd1, 1); run_ls(); else dup2(fd0, 0); close(fd0); close(fd1); pipe(fd); if (fork()
10、 0) dup2(fd1, 1); run_sort(); else dup2(fd0, 0); run_sort(); return 0; (4) 第四個(gè)任務(wù)源代碼#include #include #include #include #include void handler(int signo) printf(this is child process,pid=%d ,parent id=%d n,getpid(),getppid(); int main() int pid; pid=fork(); if(pid0) perror(fork error); else if(pid=0)
11、signal(SIGUSR1,handler); pause(); printf(child process exitn); exit(0); else int status; printf(this is parent process,pid=%d ,parent id=%d n,getpid(),getppid(); printf(waiting for child process exitn); kill(pid,SIGUSR1); wait(&status); printf(the child process exit,the return status is 0 x%xn,statu
12、s); pause(); return 0; 系統(tǒng)測(cè)試(1) 運(yùn)行結(jié)果umrlocalhost Documents$ vi demo01.cumrlocalhost Documents$ gcc -o demo01 demo01.cumrlocalhost Documents$ ./demo01hello flami!結(jié)果分析這是一個(gè)進(jìn)程控制程序,要求創(chuàng)建一個(gè)管道,復(fù)制進(jìn)程,父進(jìn)程往管道中寫(xiě)入字符串,子進(jìn)程從管道中讀取并輸出字符串。經(jīng)過(guò)測(cè)試,該程序基本實(shí)現(xiàn)了以上功能,且計(jì)算結(jié)果合理正確,滿足實(shí)驗(yàn)要求。(2) 試驗(yàn)過(guò)程及結(jié)果umrlocalhost Documents$ vi demo02.cu
13、mrlocalhost Documents$ gcc -o demo02 demo02.cumrlocalhost Documents$ ./demo02子進(jìn)程pid:14004父進(jìn)程pid:14004,退出狀態(tài)3 結(jié)果分析這是一個(gè)進(jìn)程控制程序,要求完成復(fù)制進(jìn)程,子進(jìn)程顯示自己的進(jìn)程號(hào)(PID)后暫停一段時(shí)間,父進(jìn)程等待子進(jìn)程正常結(jié)束,打印顯示等待的進(jìn)程號(hào)(PID)和等待的進(jìn)程退出狀態(tài)。經(jīng)過(guò)測(cè)試,該程序基本實(shí)現(xiàn)了以上功能,且計(jì)算結(jié)果合理正確,滿足實(shí)驗(yàn)要求。(3) 試驗(yàn)過(guò)程及結(jié)果umrlocalhost Documents$ vi demo03.cumrlocalhost Documents$
14、gcc -o demo03 demo03.cumrlocalhost Documents$ ./demo03demo01demo01.cdemo02demo02.cdemo03demo03.cdemo04demo04.c結(jié)果分析:程序利用fork函數(shù)復(fù)制進(jìn)程,調(diào)用run_ls和run_sort函數(shù)實(shí)現(xiàn)linux下ls|sort命令,對(duì)當(dāng)前目錄進(jìn)行操作?;就瓿沙绦蛟O(shè)計(jì)要求,且結(jié)果正確合理,滿足實(shí)驗(yàn)要求。(4) 試驗(yàn)過(guò)程及結(jié)果umrlocalhost Documents$ ./demo04this is parent process,pid=4010 ,parent id=3693 waitin
15、g for child process exitthe child process exit,the return status is 0 xa結(jié)果分析這是一個(gè)進(jìn)程控制軟件,要求復(fù)制一個(gè)子進(jìn)程,要求父進(jìn)程發(fā)送一個(gè)信號(hào)給子進(jìn)程,發(fā)送時(shí)打印提示,然后子進(jìn)程收到信號(hào)后打印提示結(jié)束進(jìn)程,結(jié)束完成后打印測(cè)試結(jié)果。程序基本已實(shí)現(xiàn)程序要求,結(jié)果正確合理,滿足實(shí)驗(yàn)要求。結(jié)論(應(yīng)當(dāng)準(zhǔn)確、完整、明確精練;也可以在結(jié)論或討論中提出建議、設(shè)想、尚待解決問(wèn)題等。)設(shè)計(jì)過(guò)程中的感受與體會(huì)從程序的整體構(gòu)思到程序的算法設(shè)計(jì)及程序的編寫(xiě)再到最后程序的調(diào)試,我經(jīng)歷了重重困難和考驗(yàn),但是我并沒(méi)有放棄,我運(yùn)用本學(xué)期所學(xué)到的知識(shí)和課外的一些知識(shí),從想到查再到問(wèn),最后完成了這個(gè)4個(gè)程序。在設(shè)計(jì)過(guò)程中,我不僅僅是完成了程序,更重要的是我在這次設(shè)計(jì)中鞏固了linuxc所學(xué)到的知識(shí),鍛煉了自己的實(shí)踐能力;另外在這次設(shè)計(jì)的過(guò)程中,我懂得了在設(shè)計(jì)遇到困難的時(shí)候怎樣去解決這個(gè)困難。從書(shū)上網(wǎng)上查閱資料,向比我們知識(shí)豐富的人虛心請(qǐng)教,這是我們解決問(wèn)題的主要方法,這樣也同時(shí)擴(kuò)寬了我們的知識(shí)面,打破了課堂的局限,在以后的人生道路中,我們也應(yīng)該保持住這種精神。只要這樣我們相
溫馨提示
- 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ān)保人協(xié)議書(shū)
- 軟件開(kāi)發(fā)和測(cè)試技術(shù)作業(yè)指導(dǎo)書(shū)
- 策劃推廣服務(wù)合同
- 數(shù)據(jù)挖掘與商業(yè)智能解決方案作業(yè)指導(dǎo)書(shū)
- XXX高校報(bào)告廳項(xiàng)目會(huì)議播音系統(tǒng)設(shè)計(jì)方案
- 農(nóng)業(yè)產(chǎn)業(yè)化環(huán)境保護(hù)方案
- 小學(xué)二年級(jí)數(shù)學(xué)上學(xué)期口算訓(xùn)練 打印版
- 2025年益陽(yáng)貨運(yùn)從業(yè)資格證模擬考試保過(guò)版
- 2025年貴陽(yáng)貨運(yùn)從業(yè)資格證考試模擬考試題庫(kù)答案解析
- 疼痛管理服務(wù)合同(2篇)
- 大學(xué)生心理健康教育全套PPT完整教學(xué)課件
- 安慶匯辰藥業(yè)有限公司高端原料藥、醫(yī)藥中間體建設(shè)項(xiàng)目環(huán)境影響報(bào)告書(shū)
- 政治校本課程
- 川2020J146-TJ 建筑用輕質(zhì)隔墻條板構(gòu)造圖集
- (完整)讀歌詞猜歌名
- 八年級(jí)下開(kāi)學(xué)第一課主題班會(huì)
- 初中英語(yǔ)人教版 八年級(jí)上冊(cè) 單詞默寫(xiě)表 漢譯英
- pcs-9611d-x說(shuō)明書(shū)國(guó)內(nèi)中文標(biāo)準(zhǔn)版
- GB/T 1634.1-2004塑料負(fù)荷變形溫度的測(cè)定第1部分:通用試驗(yàn)方法
- 無(wú)人機(jī)航拍技術(shù)理論考核試題題庫(kù)及答案
- T∕CMATB 9002-2021 兒童肉類制品通用要求
評(píng)論
0/150
提交評(píng)論