版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、北京化工大學(xué)北方學(xué)院課程設(shè)計報告課程名稱 系統(tǒng)軟件課程設(shè)計 設(shè)計題目 linux下的c語言設(shè)計 專業(yè)、班級 學(xué) 號 姓 名 指導(dǎo)教師 設(shè)計時間 年 月 日一、 引言(簡要說明設(shè)計題目的目的、意義、內(nèi)容、主要任務(wù)等)1. 設(shè)計目的linux/unix操作系統(tǒng)課程設(shè)計是在完成理論課程學(xué)習(xí)之后安排的綜合實(shí)踐訓(xùn)練,通過幾周的綜合課程設(shè)計,在學(xué)生掌握linux的基本知識及常用的操作命令基礎(chǔ)上,提高學(xué)生對所學(xué)知識的應(yīng)用能力,特別是:煅煉學(xué)生搜集有關(guān)linux資料,在資料文檔的幫助下,運(yùn)用linux的基本知識及常用的操作命令來解決問題的能力。2. 設(shè)計要求通過幾周的綜合課程設(shè)計,要求能完成給定的任務(wù),并寫出
2、相應(yīng)的課程設(shè)計總結(jié)報告1、根據(jù)合理的進(jìn)度安排,按照程序的流程及方法,踏實(shí)地開展課程設(shè)計活動。2、課程設(shè)計過程中,在設(shè)計各環(huán)節(jié)中撰寫相關(guān)的技術(shù)文檔,最后要求提交詳細(xì)的課程設(shè)計報告。3、開發(fā)出可以運(yùn)行的機(jī)房輔助管理系統(tǒng),通過上機(jī)檢查。3. 設(shè)計的主要內(nèi)容 1、制作一個可供小學(xué)數(shù)學(xué)運(yùn)算的程序:10以內(nèi)加減法,能根據(jù)輸入題數(shù)出題,判斷題是否正確,最后計算分?jǐn)?shù)。例如:請輸入題數(shù):21+5=2+4=由用戶輸入答案,程序根據(jù)答案判斷正誤,輸出正確率(%)。并用make工程管理器編譯。(注意分割文件,可參考第一題的提示。)編寫makefile文件。(難度系數(shù):2) 2、設(shè)計一個程序,要求利用read函數(shù)讀取系
3、統(tǒng)文件“/etc/passwd”,并在終端中顯示輸出。3、設(shè)計一個程序,程序在運(yùn)行時,能執(zhí)行vim程序,即創(chuàng)建一個新的進(jìn)程,并用ps命令查看程序的進(jìn)程號與vim的進(jìn)程號。(難度系數(shù):1)4. 設(shè)計的主要任務(wù) 認(rèn)真寫文檔,熟悉linux下的操作,掌握linux的基本知識及常用的操作命令,運(yùn)用linux的基本知識及常用的操作命令來解決問題的能力。二、 正文(課程設(shè)計的主要內(nèi)容,包括實(shí)驗與觀測方法和結(jié)果、儀器設(shè)備、計算方法、編程原理、數(shù)據(jù)處理、設(shè)計說明與依據(jù)、加工整理和圖表、形成的論點(diǎn)和導(dǎo)出的結(jié)論等。正文內(nèi)容必須實(shí)事求是、客觀真切、準(zhǔn)確完備、合乎邏輯、層次分明、語言流暢、結(jié)構(gòu)嚴(yán)謹(jǐn),符合各學(xué)科、專業(yè)的
4、有關(guān)要求。)1. makefile文件介紹makefile文件 makefile 一個工程中的源文件不計數(shù),其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作,因為 makefile就像一個shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。 1.1 makefile主要功能 make工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關(guān)系并自動維護(hù)編譯工作。而makefile 文件需要按照某種語法進(jìn)行編寫,文件中需要說明如何編譯各個源文件并連接生成可
5、執(zhí)行文件,并要求定義源文件之間的依賴關(guān)系。makefile 文件是許多編譯器-包括 windows nt 下的編譯器-維護(hù)編譯信息的常用方法,只是在集成開發(fā)環(huán)境中,用戶通過友好的界面修改 makefile 文件而已。 1.2 自動化編譯 makefile帶來的好處就是“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發(fā)的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大多數(shù)的ide都有這個命令,比如:delphi的make,visual c+的nmake,linux下gnu的make??梢?,makefile都成為了一種
6、在工程方面的編譯方法。 1.3 課程題目要求制作一個可供小學(xué)數(shù)學(xué)運(yùn)算的程序:10以內(nèi)加減法,能根據(jù)輸入題數(shù)出題,判斷題是否正確,最后計算分?jǐn)?shù)。例如:請輸入題數(shù):21+5=2+4=由用戶輸入答案,程序根據(jù)答案判斷正誤,輸出正確率(%)。并用make工程管理器編譯。(注意分割文件,可參考第一題的提示。)編寫makefile文件。(難度系數(shù):2)1.4 實(shí)現(xiàn)myhead.h/* myhead.h */#ifndef myhead_h#define myhead_hextern int question(int);extern int input(void);#endif main.c #includ
7、e #include #include #include myhead.hint main(int argc,char *argv)int i;int k;int j = input();int correctnum = question(j);float f = correctnum/(j*1.0);printf(the correct answer rate is %0.2fn,f*100);exit(0);input.c #include #include int input(void)int j;while(1)printf(please input the number of que
8、stions: );if(!scanf(%d,&j)printf(please input the correct number,and the programe is shutdown nown);exit(0);elsebreak;return j; chute.c #include #include int question(int questionnum)int i;int k;int q1;int q2;int the_true_answer_number=0;srand(unsigned)time(null);for(i=0;iquestionnum;i+)q1 = rand()%
9、10;q2 = rand()%10;printf(%d+%d=,q1,q2);scanf(%d,&k);if(k=q1+q2)the_true_answer_number+=1;return the_true_answer_number; all.c #include #include static int the_true_answer_number = 0;int main(int argc,char *argv)int i;int j;int k;int q1;int q2;srand(unsigned)time(null);printf(please input the number
10、of questions: );scanf(%d,&j);for(i=0;ij;i+)q1 = rand()%10;q2 = rand()%10;printf(%d+%d=,q1,q2);scanf(%d,&k);if(k=q1+q2)the_true_answer_number+=1;float f = the_true_answer_number/(j*1.0);printf(the correct answer rate is %0.2fn,f*100);exit(0); makefile文件 main:main.o input.o chuti.ogcc main.o input.o c
11、huti.o -o mainmain.o:main.c myhead.hgcc -c main.cinput.o:main.cgcc -c input.cchuti.o:main.cgcc -c chuti.c2. 文件操作2.1 課程題目要求設(shè)計一個程序,要求利用read函數(shù)讀取系統(tǒng)文件“/etc/passwd”,并在終端中顯示輸出。2.2 實(shí)現(xiàn)#include#include#includemain()int fd,size;char buffer80;fd=open(/etc/passwd,o_rdonly);size=read(fd,buffer,sizeof(buffer);clos
12、e(fd);printf(“%s”,buffer);3. 進(jìn)程控制3.1 進(jìn)程簡介進(jìn)程是一個程序的一次執(zhí)行的過程。在linux環(huán)境下,每個正在運(yùn)行的程序都稱為進(jìn)程。每個進(jìn)程包含進(jìn)程標(biāo)識符及數(shù)據(jù),這些數(shù)據(jù)包含進(jìn)程變量、外部變量及進(jìn)程堆棧等。3.1.1進(jìn)程與程序由于一個進(jìn)程對應(yīng)一個程序的執(zhí)行,但進(jìn)程不等同于程序。因為程序是靜態(tài)的概念,進(jìn)程是動態(tài)的概念。進(jìn)程是程序執(zhí)行的過程,包括了動態(tài)創(chuàng)建、調(diào)度和消亡的整個過程。進(jìn)程是程序執(zhí)行和資源管理的最小單位。對系統(tǒng)而言,當(dāng)用戶在各級系統(tǒng)中鍵入命令執(zhí)行一個程序的時候,它將啟動一個進(jìn)程,因此,一個程序可以對應(yīng)多個進(jìn)程。3.1.2 linux環(huán)境下的進(jìn)程管理linu
13、x環(huán)境下的進(jìn)程管理包括啟動進(jìn)程和調(diào)度進(jìn)程。啟動進(jìn)程有兩種主要途徑:手工啟動和調(diào)度啟動。(1)手工啟動又可分為前臺啟動和后臺啟動。前臺啟動:是手工啟動一個進(jìn)程的最常用方式。一般地,當(dāng)用戶輸入一個命令時,就已經(jīng)啟動了一個進(jìn)程,并且是一個前臺的進(jìn)程。后臺啟動:往往是在該進(jìn)程非常耗時,且用戶也不急著需要結(jié)果的時候啟動。一般地,當(dāng)用戶輸入一個命令結(jié)尾加上一個“&”號,就是后臺啟動一個進(jìn)程。(2)調(diào)度啟動有時系統(tǒng)需要進(jìn)行一些比較費(fèi)時而且占用資源的維護(hù)工作,并且這些工作適合在深夜無人職守的時候進(jìn)行,這時用戶就可以事先進(jìn)行調(diào)度安排,指定任務(wù)運(yùn)行的時間或者場合,到時候系統(tǒng)就會自動完成這一切工作。調(diào)度進(jìn)程包括對進(jìn)
14、程的中斷操作、改變優(yōu)先級、查看進(jìn)程狀態(tài)等。linux環(huán)境下在進(jìn)程啟動時,系統(tǒng)會分配一個唯一的數(shù)值給每個進(jìn)程,這個數(shù)值就稱為進(jìn)程標(biāo)識符。在linux中最主要的進(jìn)程標(biāo)識有進(jìn)程號(pid)和它的父進(jìn)程號(ppid)。 pid惟一地標(biāo)識一個進(jìn)程。 pid和ppid都是非零的正整數(shù)。 在linux中獲得當(dāng)前進(jìn)程的pid和ppid的系統(tǒng)調(diào)用函數(shù)為getpid和getppid函數(shù)。3.2 課程題目要求設(shè)計一個程序,程序在運(yùn)行時,能執(zhí)行vim程序,即創(chuàng)建一個新的進(jìn)程,并用ps命令查看程序的進(jìn)程號與vim的進(jìn)程號。(難度系數(shù):1)3.3 實(shí)現(xiàn)#include /*文件預(yù)處理,包含標(biāo)準(zhǔn)輸入輸出庫*/#includ
15、e /*文件預(yù)處理,包含getpid、getppid函數(shù)庫*/int main()/*c程序的主函數(shù),開始入口*/ char *args = /usr/bin/vim,null; printf(系統(tǒng)分配的進(jìn)程號(pid)是:%dn,gitpid();/*顯示輸入進(jìn)程號*/ if(execve(/usr/bin/vim,args,null)0)/*調(diào)用vim程序,創(chuàng)建新進(jìn)程*/ perror(用execve創(chuàng)建進(jìn)程出錯); return 1;3.4 分析編譯、運(yùn)行程序,系統(tǒng)會出現(xiàn)運(yùn)行結(jié)果,先顯示linux系統(tǒng)分配的進(jìn)程號(pid),接著運(yùn)行vim程序,創(chuàng)建新的進(jìn)程。再打開一個終端,用ps查看原進(jìn)
16、程和新創(chuàng)建進(jìn)程的進(jìn)程號(pid)??梢钥吹剑谛逻M(jìn)程創(chuàng)建后,原來的進(jìn)程已經(jīng)終止了。在用execve函數(shù)創(chuàng)建新進(jìn)程后,會以新的程序取代原來的進(jìn)程,然后系統(tǒng)會從新進(jìn)程運(yùn)行,但是新進(jìn)程的pid值會與原來進(jìn)程的pid值相同。一般情況下,在運(yùn)行execve函數(shù)后是不會返回原進(jìn)程的,只有在錯誤時才會返回-1,所以在原進(jìn)程中的execve函數(shù)下方,加入perror函數(shù),輸出錯誤信息,并返回1,表示有錯誤發(fā)生。三、 結(jié)論(應(yīng)當(dāng)準(zhǔn)確、完整、明確精練;也可以在結(jié)論或討論中提出建議、設(shè)想、尚待解決問題等。)該實(shí)驗包括三部分,makefile文件、文件操作、進(jìn)程控制。 這一次課程設(shè)計,讓我體會很深刻??偟母杏X,學(xué)到了
17、很多知識,特別對于linux有了全面的接觸和了解,也開始對linux產(chǎn)生了興趣,它所開放的源碼的確為學(xué)計算機(jī)的同志們提供了很好的平臺。首先,從第一個實(shí)驗中,對于程序來說是很簡單的,主要的目的是寫makefile文件,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作,因為 makefile就像一個shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。make工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關(guān)系并自動維護(hù)編譯工作。而makefile 文件需要按照某種語法進(jìn)行編寫,文件中需要說明如何編譯各個源文件并連接生成可執(zhí)行文件,并要求定義源文件之間的依賴關(guān)系。 其次,從第二個實(shí)驗中,熟悉了文件的操作。第一個實(shí)驗相對很簡單,當(dāng)然,學(xué)到的知識也有限。應(yīng)該說時間花的很多的是第二個實(shí)驗,其實(shí),現(xiàn)在回想起來,覺得很不值,因為第二個也沒什么技術(shù)含量,只是明白了文件的寫的過程。再次,從第三個實(shí)驗中,熟悉了進(jìn)程的操作。相對于前兩個實(shí)驗,第三個實(shí)驗是第一次接觸,對進(jìn)程的操作還是第一次研究,因此花的最多的時間就在第三個實(shí)驗上了,經(jīng)過對文檔的學(xué)習(xí),還是初步懂得了怎樣對進(jìn)程操作,學(xué)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度健康養(yǎng)生中心加盟管理合同4篇
- 2025年度美甲店美容護(hù)膚項目合作合同4篇
- 二零二五年度特種耐火材料采購及技術(shù)服務(wù)合同4篇
- 2025版農(nóng)產(chǎn)品電商平臺客戶服務(wù)外包合同4篇
- 二零二五年度民政局離婚協(xié)議書模板版權(quán)授權(quán)協(xié)議4篇
- 二零二五年度智能機(jī)器人研發(fā)與應(yīng)用股權(quán)質(zhì)押擔(dān)保合同
- 二零二五年度戀愛雙方子女撫養(yǎng)權(quán)及探望權(quán)合同2篇
- 2025年度抹灰工程施工材料采購合同范本4篇
- 2025年度農(nóng)場農(nóng)業(yè)產(chǎn)業(yè)鏈金融服務(wù)合同-@-1
- 二零二五年度高標(biāo)準(zhǔn)大棚建設(shè)與農(nóng)產(chǎn)品加工合作合同2篇
- 2024公路瀝青路面結(jié)構(gòu)內(nèi)部狀況三維探地雷達(dá)快速檢測規(guī)程
- 2024年高考真題-地理(河北卷) 含答案
- 中國高血壓防治指南(2024年修訂版)解讀課件
- 2024年浙江省中考科學(xué)試卷
- 2024風(fēng)力發(fā)電葉片維保作業(yè)技術(shù)規(guī)范
- 《思想道德與法治》課程教學(xué)大綱
- 2024光儲充一體化系統(tǒng)解決方案
- 2024年全國高考新課標(biāo)卷物理真題(含答案)
- 處理后事授權(quán)委托書
- 食材配送服務(wù)方案投標(biāo)方案(技術(shù)方案)
- 足療店營銷策劃方案
評論
0/150
提交評論