進(jìn)程間通信的研究與實(shí)現(xiàn)_第1頁
進(jìn)程間通信的研究與實(shí)現(xiàn)_第2頁
進(jìn)程間通信的研究與實(shí)現(xiàn)_第3頁
進(jìn)程間通信的研究與實(shí)現(xiàn)_第4頁
進(jìn)程間通信的研究與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、本科學(xué)生畢業(yè)論文(設(shè)計(jì))題目(中 文):Linux進(jìn)程間通信的研究與實(shí)現(xiàn)(英 文):The research and implementation of communication between Linux processes姓 名學(xué) 號院 (系)專業(yè)、年級指導(dǎo)教師湖南科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))誠信聲明本人鄭重聲明:所呈交的本科畢業(yè)論文(設(shè)計(jì)),是本人在指導(dǎo)老師的指導(dǎo)下,獨(dú)立進(jìn)行研究工作所取得的成果,成果不存在知識產(chǎn)權(quán)爭議,除文中已經(jīng)注明引用的內(nèi)容外,本論文不含任何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品成果。對本文的研究做出重要貢獻(xiàn)的個人和集體均已在文中以明確方式標(biāo)明。本人完全意識到本聲明的

2、法律結(jié)果由本人承擔(dān)。 本科畢業(yè)論文(設(shè)計(jì))作者簽名: 年 月 日 畢業(yè)論文(設(shè)計(jì))任務(wù)書課題名稱:Linux 進(jìn)程間通信的研究與實(shí)現(xiàn)學(xué)生姓名:系別:專業(yè):指導(dǎo)教師:1、 關(guān)鍵詞:linux環(huán)境,進(jìn)程,通信,研究2、畢業(yè)論文(設(shè)計(jì))內(nèi)容要求:用實(shí)例對linux進(jìn)程間的五種通信機(jī)制(無名有名管道、消息隊(duì)列、信號量和共享內(nèi)存)進(jìn)行親緣進(jìn)程或是非親緣進(jìn)程讀寫規(guī)則的程序驗(yàn)證,通過不同機(jī)制協(xié)調(diào)進(jìn)程來實(shí)現(xiàn)另外機(jī)制間數(shù)據(jù)的讀寫。1)利用管道快速傳輸和節(jié)約空間的性質(zhì),實(shí)現(xiàn)大數(shù)據(jù)量的信息在親緣和非親緣進(jìn)程間傳輸和接收。2)通過有名管道(FIFO)提供一個路徑名與之進(jìn)行關(guān)聯(lián),以先進(jìn)先出的形式存在于文件系統(tǒng)中,使不相

3、干的進(jìn)程也可以通過FIFO相互通信。3)將不同通信機(jī)制信號量與消息隊(duì)列結(jié)合使用,利用信號量來協(xié)調(diào)進(jìn)程對消息隊(duì)列中數(shù)據(jù)的讀寫,并應(yīng)用于實(shí)例。4)通過共享內(nèi)存映射一段內(nèi)存空間,讀進(jìn)程通過掛載到該共享內(nèi)存中來讀取內(nèi)存數(shù)據(jù)。5)對IPC通信機(jī)制的安全性分析,對安全級別比較低的消息隊(duì)列機(jī)制進(jìn)行研究改進(jìn),實(shí)現(xiàn)消息隊(duì)列的讀寫權(quán)限由系統(tǒng)來管理。3、文獻(xiàn)查閱指引:1 吳震, 陳耀武. 一種基于消息的進(jìn)程間通信機(jī)制J. 電子器件, 2012.8.26,8-10.2 W.Richard Stevens. UNIX Network Programming, Volume 2: Interprocess Communi

4、cations (2nd Edition) J. 2012, 45-61.3 李娟. 利用進(jìn)程間通信實(shí)現(xiàn)程序自我保護(hù)J. 考試周刊, 2011.8.2, 16-20.4 賀建立. Linux中System V進(jìn)程通信機(jī)制安全性形式化驗(yàn)證J. 計(jì)算機(jī)工程與科學(xué), 2012.10.30, 17-22.5 武軍彪. 嵌入式操作系統(tǒng)核間任務(wù)同步與通信的設(shè)計(jì)與實(shí)現(xiàn)D. 西安電子科技大學(xué), 2012, 18-22.6 姜玉蓉. LINUX內(nèi)核進(jìn)程間通信的模型檢測研究J. 計(jì)算機(jī)科學(xué), 2013, 12-18.7 馮蘊(yùn), 楊斌. 雙內(nèi)核實(shí)時系統(tǒng)下各進(jìn)程間通信方法的性能分析和測試J. 成都信息工程學(xué)院學(xué)報(bào),

5、2013.8.15, 12-16.4、畢業(yè)論文(設(shè)計(jì))進(jìn)度安排:1)2013年2月:尋找合適設(shè)計(jì)課題,選定課題,給老師審核,通過審核,確定課題。2)2013年3月:查看關(guān)于Linux進(jìn)程間通信的書,搜索各相關(guān)資料。3)2013年4月:寫程序,實(shí)現(xiàn)進(jìn)程間通信的五個基本方式。 4)2013年5月:查閱書刊,網(wǎng)上搜索資料,寫論文,交初稿,并在導(dǎo)師的指導(dǎo)下修改論文; 5)2013年5月下旬:定稿,做PPT,完成論文答辯。系部意見: 負(fù)責(zé)人簽名: 注:本任務(wù)書一式三份,由指導(dǎo)教師填寫,經(jīng)系畢業(yè)論文領(lǐng)導(dǎo)小組審批后一份下達(dá)給學(xué)生,一份交指導(dǎo)教師,一份留系里存檔。湖南科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))開題報(bào)告書論文

6、(設(shè)計(jì))題目Linux進(jìn)程間通信的研究與實(shí)現(xiàn)作者姓名楊禮彪所屬系、專業(yè)、年級電子工程系電子信息工程專業(yè)2009年級指導(dǎo)教師姓名、職稱李春樹教授預(yù)計(jì)字?jǐn)?shù)13000開題日期2012-12-25選題的根據(jù):1)說明本選題的理論、實(shí)際意義 2)綜述國內(nèi)外有關(guān)本選題的研究動態(tài)和自己的見解隨著計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)的高速發(fā)展、全球信息化時代的到來,給人們工作、生活的方方面面帶來方便和快捷的同時,也帶來了信息安全方面威脅。非法入侵、竊取、篡改計(jì)算機(jī)系統(tǒng)中的重要數(shù)據(jù),給社會造成難以估量的損失。目前,國內(nèi)外現(xiàn)有的Linux操作系統(tǒng)的安全級別低于C2級(按美國國防部指定的TCSEC(Trusted Computer S

7、ystem Evaluation Criteria),還遠(yuǎn)不能滿足我們對于安全的需求1-3。為了增強(qiáng)其安全性能,提高抗風(fēng)險(xiǎn)能力,需要不斷地對操作系統(tǒng)進(jìn)行修補(bǔ)和完善。因此,通過對通信機(jī)制的安全性能的研究入手,借鑒文件系統(tǒng)強(qiáng)制訪問控制,實(shí)現(xiàn)進(jìn)程通信的強(qiáng)制訪問控制,以達(dá)到避免信息泄露的目的,為我們更好地提升操作系統(tǒng)的安全性能,具有十分重要的指導(dǎo)意義。主要內(nèi)容:1)Linux系統(tǒng)的介紹;2)Linux進(jìn)程的概述及創(chuàng)建;3)Linux進(jìn)程間通信各種方式的研究與程序?qū)崿F(xiàn); 4)Linux進(jìn)程通信機(jī)制的安全性研究;5)設(shè)計(jì)的總結(jié)。研究方法:1)查閱相關(guān)書籍,進(jìn)行理論分析;2)針對性的對各進(jìn)程間通信方法的研究

8、,通過不斷調(diào)試程序去實(shí)現(xiàn)通信;3)上網(wǎng)查資料,跟同學(xué)探討并和導(dǎo)師交流。完成期限和采取的主要措施:采取的主要措施:嚴(yán)格遵照湖南科技學(xué)院畢業(yè)論文(設(shè)計(jì))工作管理辦法的指示精神,結(jié)合個人的實(shí)際情況,我完成這項(xiàng)設(shè)計(jì)所采取的主要措施有兩條:一是他人幫助。聯(lián)系指導(dǎo)導(dǎo)師,確定設(shè)計(jì)課題方向與設(shè)計(jì)內(nèi)容,讓老師指點(diǎn)設(shè)計(jì)思路,遇到問題請教同學(xué),為更好完成設(shè)計(jì)提供了很大幫助;二是查閱資料。到圖書館借來了相關(guān)書籍和網(wǎng)絡(luò)上查閱資料,充分利用各種資源。主要參考資料:1 陳城高. 進(jìn)程間通信技術(shù)在銀行短信系統(tǒng)中的應(yīng)用J, 計(jì)算機(jī)工程與應(yīng)用, 2011.4.11, 17-24.2賀建立. Linux中System V進(jìn)程通信機(jī)

9、制安全性形式化驗(yàn)證J. 計(jì)算機(jī)工程與科學(xué), 2012.10.30, 17-22. 3 李娟. 利用進(jìn)程間通信實(shí)現(xiàn)程序自我保護(hù)J. 考試周刊, 2011.8.2, 16-20.4 W.Richard Stevens. UNIX Network Programming, Volume 2: Interprocess Communications (2nd Edition) J. 2012, 45-61.5 姜玉蓉. LINUX內(nèi)核進(jìn)程間通信的模型檢測研究J. 計(jì)算機(jī)科學(xué), 2013, 12-18.6 馮蘊(yùn), 楊斌. 雙內(nèi)核實(shí)時系統(tǒng)下各進(jìn)程間通信方法的性能分析和測試J. 成都信息工程學(xué)院學(xué)報(bào), 20

10、13.8.15, 12-16.7 吳震, 陳耀武. 一種基于消息的進(jìn)程間通信機(jī)制J. 電子器件, 2012.8.26,8-10.指導(dǎo)教師意見:指導(dǎo)教師簽名:教研室意見:簽 名: 年 月 日開 題 報(bào) 告 會 紀(jì) 要時 間2012.12.23地 點(diǎn)三教608與會人員姓 名職務(wù)(職稱)姓 名職務(wù)(職稱)姓 名職務(wù)(職稱)李春樹教 授李小武副教授李艷芳副教授楊 熙碩 士譚永宏副教授廖朝陽碩 士會議記錄摘要:楊熙老師問:你怎樣去查找資料的? 答:主要是通過導(dǎo)師介紹的湘科院學(xué)校網(wǎng)站上的圖書館、期刊網(wǎng)以及同學(xué)推薦的IT論壇等查找相關(guān)的文獻(xiàn)資料,當(dāng)然百度、谷歌肯定也是用到了的。李春樹老師問:你的研究意義是什

11、么?答:雖然目前國內(nèi)對Linux操作系統(tǒng)的安全性有所研究,但是其安全級別還是比較低,還不能滿足我們對于安全的需求,所以我們需要實(shí)現(xiàn)更高級別的安全功能。我通過對這個Linux操作系統(tǒng)安全性的研究,實(shí)現(xiàn)了Linux的IPC機(jī)制的強(qiáng)制訪問控制,對提升系統(tǒng)安全性有所幫助。 會議主持人: 記 錄 人:年 月 日指導(dǎo)小組意見負(fù)責(zé)人簽名:年 月 日系部 意 見負(fù)責(zé)人簽名:年月日注:此表由學(xué)生本人填寫,一式三份,一份留系里存檔,指導(dǎo)老師和本人各保存一份。湖南科技學(xué)院畢業(yè)論文(設(shè)計(jì))中期檢查表畢業(yè)論文(設(shè)計(jì))題 目Linux進(jìn)程間通信的研究與實(shí)現(xiàn)學(xué)生姓名楊禮彪學(xué) 號200906002441系 別電子工程系專 業(yè)

12、電子信息工程指導(dǎo)教師李春樹檢查日期指導(dǎo)教師檢查情況記載及修改意見: 檢查情況記載:1、 對要設(shè)計(jì)的東西了解還可以,對設(shè)計(jì)很有幫助;2、 缺少國內(nèi)外設(shè)計(jì)成果分析;3、 參考文獻(xiàn)不規(guī)范;4、 論文正文基本完成,但是論文格式上還沒弄好。修改意見:1、 要介紹下當(dāng)前國內(nèi)外的研究成果,還有哪些不足與改進(jìn);2、 參考文獻(xiàn)要按照規(guī)范來寫,時間出處等都要有;3、 注意論文格式,參照模版來設(shè)計(jì);4、 盡量突出說明你自己所做的工作,突出自己的獨(dú)特之處;5、 緒論沒做好,要突出設(shè)計(jì)的意義;6、 要按順序引用。7、 截圖要有圖標(biāo)及說明。簽名:注:此表用于指導(dǎo)教師在學(xué)生畢業(yè)論文(設(shè)計(jì))初稿完成后對學(xué)生執(zhí)行任務(wù)書情況進(jìn)行

13、中期檢查時用,由指導(dǎo)教師填寫湖南科技學(xué)院畢業(yè)設(shè)計(jì)(論文)指導(dǎo)過程記錄表畢業(yè)論文(設(shè)計(jì))題目Linux進(jìn)程間通信的研究與實(shí)現(xiàn)學(xué)生姓名楊禮彪學(xué)號200906002441專業(yè)班級電信0904班指導(dǎo)教師李春樹職稱教 授系(教研室)電子工程系指導(dǎo)過程記錄指導(dǎo)內(nèi)容記錄(一)1、明確選題背景,選題意義;2、確定選題,填寫畢業(yè)設(shè)計(jì)任務(wù)書;學(xué) 生 簽 名: 201 年 月 日指導(dǎo)教師簽名: 201 年 月 日指導(dǎo)內(nèi)容記錄(二)1、到圖書館查找和借閱與選題有關(guān)的文獻(xiàn)和資料;2、從中國知網(wǎng)上檢索和下載與選題有關(guān)的文獻(xiàn);學(xué) 生 簽 名: 201 年 月 日 指導(dǎo)教師簽名: 201 年 月 日指導(dǎo)內(nèi)容記錄(三)1、注意

14、論文格式,參照模板;2、參考文獻(xiàn)的創(chuàng)建時間要在三年之內(nèi);3、論文要突出自己設(shè)計(jì)的不同點(diǎn); 學(xué) 生 簽 名: 201 年 月 日 指導(dǎo)教師簽名: 201 年 月 日指導(dǎo)內(nèi)容記錄(四)1、圖形要有圖標(biāo),要夠清楚。2、文獻(xiàn)最好為最近出的期刊。學(xué) 生 簽 名: 201 年 月 日 指導(dǎo)教師簽名: 201 年 月 日指導(dǎo)過程記錄指導(dǎo)內(nèi)容記錄(五)1、注意文獻(xiàn)的引用要加引用標(biāo)注;2、制作一個能反映論文主要內(nèi)容的PPT,作答辯陳述用,陳述時間控制在 58分鐘;學(xué) 生 簽 名: 201 年 月 日 指導(dǎo)教師簽名: 201 年 月 日指導(dǎo)內(nèi)容記錄(六)1、英語名詞第一次介紹要有英文全稱。2、論文大體上可以,但還

15、需修改,排版還不夠完善,設(shè)計(jì)內(nèi)容突出的同時還得讓人有視覺美感;學(xué) 生 簽 名: 201 年 月 日 指導(dǎo)教師簽名: 201 年 月 日指導(dǎo)內(nèi)容記錄(七)學(xué) 生 簽 名: 201 年 月 日 指導(dǎo)教師簽名: 201 年 月 日指導(dǎo)內(nèi)容記錄(八)學(xué) 生 簽 名: 201 年 月 日 指導(dǎo)教師簽名: 201 年 月 日答辯小組組長意見(對情況是否屬實(shí)做出意見)組長(簽名): 201 年 月 日注:本表與畢業(yè)論文一起裝訂存檔。湖南科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))評審表論文題目Linux進(jìn)程間通信的研究與實(shí)現(xiàn)作者姓名楊禮彪所屬系、專業(yè)、年級電子工程系 電子信息工程專業(yè) 2009年級指導(dǎo)教師姓名、職稱李春樹

16、教授 字 數(shù)13000定稿日期中文摘要本論文闡述了在Linux環(huán)境下,對管道(pipe)、有名管道(named pipe)、信號量(semophore)、消息隊(duì)列(message queue)、信號(sinal)、共享內(nèi)存(shared memory)等幾種主要進(jìn)程間通信手段的內(nèi)部實(shí)現(xiàn)機(jī)制進(jìn)行了分析和比較,并針對每個通信手段的關(guān)鍵技術(shù)環(huán)節(jié)給出詳細(xì)的實(shí)現(xiàn)事例,為研究大型的應(yīng)用系統(tǒng)進(jìn)程間通信,提供一種有益的參考與借鑒。關(guān)鍵詞(3-5個)linux環(huán)境,進(jìn)程,通信,設(shè)計(jì)英文摘要This paper describes the Linux environment, the pipeline (pipe

17、), named pipes (named pipe), semaphore (semophore), message queues (message queue), signal (sinal), shared memory (shared memory), such as several major means of inter-process communication mechanism of the internal implementation were analyzed and compared, and means of communication for each of th

18、e key technical aspects of the implementation details are given examples of the application of the system for the study of large-scale inter-process communication, provide a useful reference and experience.關(guān)鍵詞Linux environment, process, communicate, research指導(dǎo)教師評定成績評審基元評審要素評審內(nèi)涵滿分指導(dǎo)教師實(shí)評分選題質(zhì)量25%目的明確符合

19、要求選題符合專業(yè)培養(yǎng)目標(biāo),體現(xiàn)學(xué)科、專業(yè)特點(diǎn)和教學(xué)計(jì)劃的基本要求,達(dá)到畢業(yè)論文(設(shè)計(jì))綜合訓(xùn)練的目的。10理論意義或?qū)嶋H價值符合本學(xué)科的理論發(fā)展,有一定的學(xué)術(shù)意義;對經(jīng)濟(jì)建設(shè)和社會發(fā)展的應(yīng)用性研究中的某個理論或方法問題進(jìn)行研究,具有一定的實(shí)際價值。10選題恰當(dāng)題目規(guī)模適當(dāng),難易度適中;有一定的科學(xué)性。5能力水平40%查閱文獻(xiàn)資料能力能獨(dú)立查閱相關(guān)文獻(xiàn)資料,歸納總結(jié)本論文所涉及的有關(guān)研究狀況及成果。10綜合運(yùn)用知識能力能運(yùn)用所學(xué)專業(yè)知識闡述問題;能對查閱的資料進(jìn)行整理和運(yùn)用;能對其科學(xué)論點(diǎn)進(jìn)行論證。10研究方案的設(shè)計(jì)能力整體思路清晰;研究方案合理可行。5研究方法和手段的運(yùn)用能力能運(yùn)用本學(xué)科常規(guī)研

20、究方法及相關(guān)研究手段(如計(jì)算機(jī)、實(shí)驗(yàn)儀器設(shè)備等)進(jìn)行實(shí)驗(yàn)、實(shí)踐并加工處理、總結(jié)信息。10外文應(yīng)用能力能閱讀、翻譯一定量的本專業(yè)外文資料、外文摘要和外文參考書目(特殊專業(yè)除外)體現(xiàn)一定的外語水平。5論文質(zhì)量35%文題相符較好地完成論文選題的目的要求。5寫作水平論點(diǎn)鮮明;論據(jù)充分;條理清晰;語言流暢。15寫作規(guī)范符合學(xué)術(shù)論文的基本要求。用語、格式、圖表、數(shù)據(jù)、量和單位、各種資料引用規(guī)范化、符合標(biāo)準(zhǔn)。10論文篇幅10000字左右。5實(shí)評總分 成績等級指導(dǎo)教師評審意見: 指導(dǎo)教師簽名:說明:評定成績分為優(yōu)秀、良好、中等、及格、不及格五個等級,實(shí)評總分90100分記為優(yōu)秀,8089分記為良好,7079分

21、記為中等,6069分記為及格,60分以下記為不及格。評閱教師評定成績評審基元評審要素評審內(nèi)涵滿分評閱教師實(shí)評分選題質(zhì)量25%目的明確符合要求選題符合專業(yè)培養(yǎng)目標(biāo),體現(xiàn)學(xué)科、專業(yè)特點(diǎn)和教學(xué)計(jì)劃的基本要求,達(dá)到畢業(yè)論文(設(shè)計(jì))綜合訓(xùn)練的目的。10理論意義或?qū)嶋H價值符合本學(xué)科的理論發(fā)展,有一定的學(xué)術(shù)意義;對經(jīng)濟(jì)建設(shè)和社會發(fā)展的應(yīng)用性研究中的某個理論或方法問題進(jìn)行研究,具有一定的實(shí)際價值。10選題恰當(dāng)題目規(guī)模適當(dāng),難易度適中;有一定的科學(xué)性。5能力水平40%查閱文獻(xiàn)資料能力能獨(dú)立查閱相關(guān)文獻(xiàn)資料,歸納總結(jié)本論文所涉及的有關(guān)研究狀況及成果。10綜合運(yùn)用知識能力能運(yùn)用所學(xué)專業(yè)知識闡述問題;能對查閱的資料進(jìn)

22、行整理和運(yùn)用;能對其科學(xué)論點(diǎn)進(jìn)行論證。10研究方案的設(shè)計(jì)能力整體思路清晰;研究方案合理可行。5研究方法和手段的運(yùn)用能力能運(yùn)用本學(xué)科常規(guī)研究方法及相關(guān)研究手段(如計(jì)算機(jī)、實(shí)驗(yàn)儀器設(shè)備等)進(jìn)行實(shí)驗(yàn)、實(shí)踐并加工處理、總結(jié)信息。10外文應(yīng)用能力能閱讀、翻譯一定量的本專業(yè)外文資料、外文摘要和外文參考書目(特殊專業(yè)除外)體現(xiàn)一定的外語水平。5論文質(zhì)量35%文題相符較好地完成論文選題的目的要求。5寫作水平論點(diǎn)鮮明;論據(jù)充分;條理清晰;語言流暢。15寫作規(guī)范符合學(xué)術(shù)論文的基本要求。用語、格式、圖表、數(shù)據(jù)、量和單位、各種資料引用規(guī)范化、符合標(biāo)準(zhǔn)。10論文篇幅10000字左右。5實(shí)評總分 成績等級評閱教師評審意見

23、: 評閱教師簽名:說明:評定成績分為優(yōu)秀、良好、中等、及格、不及格五個等級,實(shí)評總分90100分記為優(yōu)秀,8089分記為良好,7079分記為中等,6069分記為及格,60分以下記為不及格。湖南科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))答辯記錄表論文題目Linux進(jìn)程間通信的研究與實(shí)現(xiàn)作者姓名楊禮彪所屬系、專業(yè)、年級電子工程系電子信息工程專業(yè) 2009年級指導(dǎo)教師姓名、職稱李春樹 教授答 辯 會 紀(jì) 要時間地點(diǎn)三教608答辯小組成員姓 名職務(wù)(職稱)姓 名職務(wù)(職稱)姓 名職務(wù)(職稱)李春樹教 授李小武副教授李艷芳副教授楊 熙碩 士譚永宏副教授廖朝陽碩 士答辯中提出的主要問題及回答的簡要情況記錄:1.楊熙老師

24、問:什么是親緣進(jìn)程,什么是非親緣進(jìn)程? 答:顧名思義,親緣進(jìn)程就是有一定親緣關(guān)系的進(jìn)程,這里指的就是父子進(jìn)程。非親緣進(jìn)程就是跨越了親緣,是兩個程序進(jìn)程,并非僅限于一個程序內(nèi)的父子進(jìn)程。2.李小武老師問:除了單機(jī)的進(jìn)程間通信,需要通過怎樣能實(shí)現(xiàn)跨機(jī)通信?可以通過套接字(socket)來實(shí)現(xiàn)跨越機(jī)子的通信。兩臺主機(jī)A和B,在A主機(jī)通過進(jìn)程C發(fā)送數(shù)據(jù)到套接字中,在B主機(jī)進(jìn)程D可以通過讀取套接字來獲得進(jìn)程C發(fā)送的消息。3.譚永宏老師問:在此次設(shè)計(jì)中你怎樣實(shí)現(xiàn)非親緣進(jìn)程間的通信?答:通過內(nèi)核中的消息隊(duì)列來實(shí)現(xiàn),通過寫進(jìn)程往消息隊(duì)列中寫東西,通過讀進(jìn)程從消息隊(duì)列中讀取內(nèi)容。寫時可以設(shè)置消息類型值,讀取時只

25、有存在匹配的消息類型值(相當(dāng)于一個密碼)才能讀出東西。 會議主持人:記 錄 人: 年 月 日答辯小組意見評語:評定等級: 負(fù)責(zé)人(簽名): 年 月 日系學(xué)位委員會意見評語:論文(設(shè)計(jì))最終評定等級:負(fù)責(zé)人(簽名): 系部(公章) 年月 日校學(xué)位委員會意見評語:評定等級: 負(fù)責(zé)人(簽名): 年月 日目 錄緒論11 Linux系統(tǒng)32 Linux進(jìn)程52.1 進(jìn)程的概念52.2 進(jìn)程的構(gòu)成要素52.3 Linux進(jìn)程概述52.4 Linux進(jìn)程間關(guān)系52.5 進(jìn)程的創(chuàng)建62.6 Linux進(jìn)程間通信的介紹73 Linux進(jìn)程間通信機(jī)制103.1信號103.1.1 信號的概念103.1.2 信號的本

26、質(zhì)103.1.3 信號來源103.1.4 有關(guān)信號的系統(tǒng)調(diào)用signal103.2管道113.2.1 管道的概念及介紹113.2.2無名管道123.2.3無名管道實(shí)現(xiàn)通信133.2.4命名管道143.2.5讀寫管道的特點(diǎn)153.2.6 命名管道實(shí)現(xiàn)通信153.3 System V IPC183.3.1 消息隊(duì)列183.3.2信號量233.3.3共享內(nèi)存313.4 linux通信機(jī)制的安全性研究363.5 總結(jié)分析38參考文獻(xiàn)39致 謝40Linux 進(jìn)程間通信的研究與實(shí)現(xiàn)摘要本論文闡述了在Linux環(huán)境下,對管道(pipe)、有名管道(named pipe)、信號量(semophore)、消息

27、隊(duì)列(message queue)、信號(sinal)、共享內(nèi)存(shared memory)等幾種主要進(jìn)程間通信手段的內(nèi)部實(shí)現(xiàn)機(jī)制進(jìn)行了分析和比較,并針對每個通信手段的關(guān)鍵技術(shù)環(huán)節(jié)給出詳細(xì)的實(shí)現(xiàn)事例,為研究大型的應(yīng)用系統(tǒng)進(jìn)程間通信,提供一種有益的參考與借鑒。【關(guān)鍵詞】linux環(huán)境,進(jìn)程,通信,研究The research and implementation of communication between Linux processesABSTRACTThis paper describes the Linux environment, the pipeline (pipe), name

28、d pipes (named pipe), semaphore (semophore), message queues (message queue), signal (sinal), shared memory (shared memory), such as several major means of inter-process communication mechanism of the internal implementation were analyzed and compared, and means of communication for each of the key t

29、echnical aspects of the implementation details are given examples of the application of the system for the study of large-scale inter-process communication, provide a useful reference and experience.【key word】Linux environment, process, communicate, research緒論 隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,計(jì)算機(jī)系統(tǒng)中運(yùn)行的應(yīng)用程序功能日益強(qiáng)大,孤立存在的,

30、獨(dú)立運(yùn)行的應(yīng)用程序越來越多,越來越多的程序相互間需要共享數(shù)據(jù)和不斷的交換信息。即使在同意應(yīng)用程序中,也常常包含多個進(jìn)程,它們之間同樣需要相互通信、共享和交換數(shù)據(jù),共同完成程序功能。Linux中一個進(jìn)程的地址空間內(nèi)的數(shù)據(jù)是私有的,別的進(jìn)程不可見1。不同類型的進(jìn)程通信手段也常常是不同的,在程序設(shè)計(jì)中采用的進(jìn)程通信技術(shù)不同,對應(yīng)用程序的功能實(shí)現(xiàn)和運(yùn)行效率都有著重要影響。 Linux下的進(jìn)程通信機(jī)制基本上是從UNIX平臺上繼承而來,linux 進(jìn)程間通信的幾種主要手段主要包括:管道(pipe)、命名管道(FIFO)、消息隊(duì)列、信號量和共享內(nèi)存2。其中管道和有名管道是最早的進(jìn)程間通信機(jī)制之一,管道可用于

31、具有親緣關(guān)系進(jìn)程間的通信,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關(guān)系進(jìn)程間的通信。認(rèn)清管道和有名管道的讀寫規(guī)則是在程序中應(yīng)用它們的關(guān)鍵,本文在詳細(xì)討論了管道和有名管道的通信機(jī)制的基礎(chǔ)上,用實(shí)例對其讀寫規(guī)則進(jìn)行了程序驗(yàn)證,這樣做有利于增強(qiáng)讀者對讀寫規(guī)則的感性認(rèn)識,同時也提供了應(yīng)用范例 。共享內(nèi)存是直接用虛擬地址訪問內(nèi)存中的數(shù)據(jù),不需要數(shù)據(jù)從內(nèi)核到客戶進(jìn)程的相互拷貝,它的通信效率是幾種進(jìn)程通信機(jī)制中最高的3。但是不用進(jìn)程讀/寫一塊內(nèi)存空間的操作時微觀的、直接的、不能由內(nèi)核保證互斥性,進(jìn)程間也不會自動到達(dá)同步,因此共享內(nèi)存需要與其他通信機(jī)制結(jié)合,來實(shí)現(xiàn)進(jìn)程的

32、同步與互斥。本文將信號量與消息隊(duì)列結(jié)合使用,利用信號量來協(xié)調(diào)進(jìn)程對消息隊(duì)列中數(shù)據(jù)的讀寫(見3.3.3章節(jié)),并應(yīng)用于實(shí)例。隨著計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)的高速發(fā)展、全球信息化時代的到來,給人們工作、生活的方方面面帶來方便和快捷的同時,也帶來了信息安全方面威脅。非法入侵、竊取、篡改計(jì)算機(jī)系統(tǒng)中的重要數(shù)據(jù),給社會造成難以估量的損失。受我國計(jì)算機(jī)和電子工業(yè)水平的限制,國內(nèi)計(jì)算機(jī)系統(tǒng)的核心硬件幾乎完全依靠進(jìn)口,核心計(jì)算機(jī)系統(tǒng)軟件,例如操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)等,也基本上依賴國外技術(shù),因此我國信息化建設(shè)面臨著極大的威脅和挑戰(zhàn)4。在現(xiàn)在國內(nèi)外研究基礎(chǔ)上,計(jì)算機(jī)硬件和軟件系統(tǒng)要能發(fā)揮作用,必須通過操作系統(tǒng)的管理協(xié)調(diào)才

33、能完成,因此如果能有效的解決操作系統(tǒng)層的安全問題,就很大程度上解決了信息系統(tǒng)硬件和軟件的安全問題。Linux的出現(xiàn),在降低了開發(fā)操作系統(tǒng)的門檻,為我國開發(fā)自主安全的操作系統(tǒng)帶來機(jī)遇。而進(jìn)程間通信機(jī)制又為我們提供了數(shù)據(jù)傳輸方式,我們可以通過進(jìn)程間通信實(shí)現(xiàn)具有安全性的通信,為我們更好提升操作系統(tǒng)打下基礎(chǔ)。目前國內(nèi)外對Linux操作系統(tǒng)的安全性有所研究,但是其安全級別還是低于C2級(按美國國防部指定的TCSEC(Trusted Computer System Evaluation Criteria)5。這級別還不能滿足我們對于安全的需求,為了增強(qiáng)其安全功能,提供抗擊能力,需要實(shí)現(xiàn)更高級別的安全功能。

34、目前國內(nèi)外對Linux操作系統(tǒng)安全性研究還存在的問題有:1) 超級用戶的權(quán)限太大,它擁有所有的特權(quán),一旦獲得超級用戶的權(quán)限,就獲得了對整個計(jì)算機(jī)系統(tǒng)的安全控制5。2) 文件訪問控制簡單:Linux對文件目錄的訪問控制只能控制到用戶組,不能對單個用戶實(shí)現(xiàn)訪問控制,權(quán)限粒度過粗。3) 缺少強(qiáng)制訪問控制:Linux主要采用自主訪問控制機(jī)制,缺乏強(qiáng)制訪問控制機(jī)制5-6。4) 安全審計(jì)功能不足:Linux只有簡單的審計(jì),而且主要是通過日志來進(jìn)行審計(jì),缺乏對日志數(shù)據(jù)的安全整性保護(hù),日志也可有能被入侵者修改,消除攻擊痕跡。就TCSEC評估來說,達(dá)到B級標(biāo)準(zhǔn)的操作系統(tǒng)即稱為安全操作系統(tǒng),當(dāng)前我們的目標(biāo)是B1級

35、,要達(dá)到TCBSEC B1級,主要需要實(shí)現(xiàn)強(qiáng)制訪問控制功能。我們這里就針對“缺少強(qiáng)制訪問控制”這個不足進(jìn)行改進(jìn),實(shí)現(xiàn)強(qiáng)制訪問控制功能。 與文件訪問類似,通過操作系統(tǒng)進(jìn)程間通信機(jī)制對消息隊(duì)列、共享內(nèi)存、信號量,管道和FIFOS的訪問,也可以造成敏感信息的泄漏,對這些通信機(jī)制同樣要進(jìn)行強(qiáng)制訪問控制檢查。因?yàn)楣艿篮虵IFOS實(shí)際上就是通過建立一個文件來實(shí)現(xiàn),所以對這兩種IPC機(jī)制的強(qiáng)制訪問控制的實(shí)現(xiàn)可以參考文件系統(tǒng)的安全機(jī)制。在章節(jié)3.4集中討論System V IPC機(jī)制的安全,因?yàn)镮PC機(jī)制中消息隊(duì)列的安全級別不高,只達(dá)到自主訪問級,所以側(cè)重對消息隊(duì)列進(jìn)行安全性的改進(jìn)。 經(jīng)過對消息隊(duì)列安全性的修

36、改,Linux的IPC機(jī)制基本上實(shí)現(xiàn)了強(qiáng)制訪問控制,向?qū)崿F(xiàn)linux安全操作系統(tǒng)邁進(jìn)了一步,為信息系統(tǒng)安全體系的建設(shè)打下堅(jiān)實(shí)的基礎(chǔ)。1 Linux系統(tǒng)Linux操作系統(tǒng)是UNIX操作系統(tǒng)的一種克隆系統(tǒng),最早是由芬蘭黑客林納斯.托瓦茲(Linus B. Torvalds)為嘗試在英特爾x86架構(gòu)上提供自由免費(fèi)的類Unix操作系統(tǒng)而開發(fā)的。該計(jì)劃開始于1991年,林納斯·托瓦茲當(dāng)時在Usenet新聞組comp.os.minix登載帖子,這份著名的帖子標(biāo)示著Linux計(jì)劃的正式開始。以后借助于Internet網(wǎng)絡(luò),并通過全世界各地計(jì)算機(jī)愛好者的共同努力,已成為今天世界上使用最多的一種UNI

37、X 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長。 Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。它主要用于基于Intel x86系列CPU的計(jì)算機(jī)上。這個系統(tǒng)是由全世界各地的成千上萬的程序員設(shè)計(jì)和實(shí)現(xiàn)的。其目的是建立不受任何商品化軟件的版權(quán)制約的、全世界都能自由使用的Unix兼容產(chǎn)品。技術(shù)上說Linux是一個內(nèi)核。“內(nèi)核”指的是一個提供硬件抽象層、磁盤

38、及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件。一個內(nèi)核不是一套完整的操作系統(tǒng)。一套基于Linux內(nèi)核的完整操作系統(tǒng)叫作Linux操作系統(tǒng)。Linux的基本思想有兩點(diǎn):第一,一切都是文件;第二,每個軟件都有確定的用途。其中第一條詳細(xì)來講就是系統(tǒng)中的所有都?xì)w結(jié)為一個文件,包括命令、硬件和軟件設(shè)備、操作系統(tǒng)、進(jìn)程等等對于操作系統(tǒng)內(nèi)核而言,都被視為擁有各自特性或類型的文件。至于說Linux是基于Unix的,很大程度上也是因?yàn)檫@兩者的基本思想十分相近。絕大多數(shù)基于Linux內(nèi)核的的操作系統(tǒng)使用了大量的GNU軟件,包括了shell程序、工具、程序庫、編譯器及工具,還有許多其他程序,例如Emacs。正因?yàn)槿绱耍珿

39、NU計(jì)劃的開創(chuàng)者理查德·馬修·斯托曼博士提議將Linux操作系統(tǒng)改名為GNU/Linux,但有些人只把操作系統(tǒng)叫做“Linux”。由于這些系統(tǒng)工具和庫主要由GNU計(jì)劃提供,自由軟件基金會提議將該組合系統(tǒng)命名為GNU/Linux。Linux是一個領(lǐng)先的操作系統(tǒng),可以運(yùn)行在服務(wù)器和其他大型平臺之上,如大型機(jī)和超級計(jì)算機(jī)。世界上500個最快的超級計(jì)算機(jī)90%以上運(yùn)行Linux發(fā)行版或變種,最快的前10名超級計(jì)算機(jī)運(yùn)行的都是Linux操作系統(tǒng)。 Linux也廣泛應(yīng)用在嵌入式設(shè)備上,如手機(jī)、平板電腦、路由器、電視和電子游戲機(jī)等。在移動設(shè)備上廣泛使用的Android操作系統(tǒng)就是創(chuàng)建在L

40、inux內(nèi)核之上的。Linux以它的高效性和靈活性著稱,Linux模塊化的設(shè)計(jì)結(jié)構(gòu),使得它既能在價格昂貴的工作站上運(yùn)行,也能夠在廉價的PC機(jī)上實(shí)現(xiàn)全部的Unix特性,具有多任務(wù)、多用戶的能力。Linux是在GNU公共許可權(quán)限下免費(fèi)獲得的,是一個符合POSIX標(biāo)準(zhǔn)的操作系統(tǒng)。Linux操作系統(tǒng)軟件包不僅包括完整的Linux操作系統(tǒng),而且還包括了文本編輯器、高級語言編譯器等應(yīng)用軟件。它還包括帶有多個窗口管理器的X-Windows圖形用戶界面,如同我們使用Windows NT一樣,允許我們使用窗口、圖標(biāo)和菜單對系統(tǒng)進(jìn)行操作。Linux由于其系統(tǒng)軟件的免費(fèi)獲取,硬件費(fèi)用低廉的特點(diǎn),近年來發(fā)展迅猛。Li

41、nux的應(yīng)用軟件已達(dá)上千兆。從DOS環(huán)境摸擬到圖像,音響信號的處理,從游戲到中文軟件,無所不包。各大軟件公司已紛紛開始推出Linux版本的商業(yè)軟件。最近,對Linux所做的基準(zhǔn)測試表明,Pentium/100的速度可以跟SUN/20蓖美。94年底在華盛頓萬國會議中心召開了Linux世界年會,各大軟件公司都派出了陣容強(qiáng)大的代表團(tuán),展出了豐富的Linux產(chǎn)品。Linux開始進(jìn)入商業(yè)應(yīng)用時代。中國的Internet跟中國的經(jīng)濟(jì)一樣正經(jīng)歷大建設(shè),大發(fā)展時代,要在幾年內(nèi)把百座城市的上千所大學(xué),研究所聯(lián)成網(wǎng),急需大量的工作站和系統(tǒng)管理員,Linux不失為一個低費(fèi)用的選擇。利用現(xiàn)有的PC安裝上Linux系統(tǒng)

42、,就可以在各系,部門得到一臺專業(yè)的UNIX工作站,它可以作為Internet上的一個點(diǎn)。 目前,在操作系統(tǒng)市場上除了一些專業(yè)的領(lǐng)域外,微軟公司正在以其Windows95/NT的強(qiáng)勁攻勢橫掃全球市場。能與其相抗衡的公司越來越少,連微軟公司最大的對手擁有一大批忠心耿耿用戶的蘋果公司也不得不敗下陣來,接受微軟公司的合作意向。但是在迅猛發(fā)展的國際互聯(lián)網(wǎng)上,有這樣一群人,他們是一支由編程高手、業(yè)余計(jì)算機(jī)玩家、黑客們組成的奇怪隊(duì)伍,完全獨(dú)立地開發(fā)出在功能上毫不遜色于微軟公司的商業(yè)操作系統(tǒng)的一個全新的免費(fèi)UNIX操作系統(tǒng)Linux(發(fā)音為Li-nucks),成為網(wǎng)絡(luò)上一支不可小覷的力量,并以不到四年的微薄資

43、格就成為微軟的一個強(qiáng)勁對手。據(jù)很不精確的統(tǒng)計(jì),全世界使用Linux操作系統(tǒng)的人已經(jīng)有數(shù)百萬之多,而且絕大多數(shù)是在網(wǎng)絡(luò)上使用的。而在中國,隨著Internet大潮的卷入,一批主要以高等院校的學(xué)生和ISP(Internet Service Provider)的技術(shù)人員組成的Linux愛好者隊(duì)伍也已經(jīng)蓬蓬勃勃地成長起來??梢哉f在中國,隨著網(wǎng)絡(luò)的不斷普及,免費(fèi)而性能優(yōu)異的Linux操作系統(tǒng)必將發(fā)揮出越來越大的作用。 2 Linux進(jìn)程2.1 進(jìn)程的概念進(jìn)程是一個具有獨(dú)立功能的程序關(guān)于某個數(shù)據(jù)集合的一次運(yùn)行活動。它可以申請和擁有系統(tǒng)資源,是一個動態(tài)的概念,是一個活動的實(shí)體。它不只是程序的代碼,還包括當(dāng)前

44、的活動,通過程序計(jì)數(shù)器的值和處理寄存器的內(nèi)容來表示。2.2 進(jìn)程的構(gòu)成要素 從進(jìn)程的構(gòu)成要素來看,進(jìn)程由三部分組成,也就是進(jìn)程控制塊(Process Control Block,簡稱PCB),有關(guān)的程序段,以及操作的數(shù)據(jù)集。其中進(jìn)程控制塊主要包括進(jìn)程的一些描述信息、資源信息以及控制信息等。系統(tǒng)為每個進(jìn)程設(shè)置一個PCB,它是標(biāo)識和描述進(jìn)程存在及相關(guān)特性的數(shù)據(jù)塊,是進(jìn)城存在的唯一標(biāo)識,是金城動態(tài)特征的集中反映。當(dāng)創(chuàng)建一個進(jìn)程時,系統(tǒng)首先完成其功能之后,系統(tǒng)則釋放PCB,進(jìn)程也隨之消亡。2.3 Linux進(jìn)程概述 .open系統(tǒng)調(diào)用返回的文件描述符是非負(fù)整型。 .每一個進(jìn)程都有自己的文件描述符集合。

45、 .當(dāng)創(chuàng)建進(jìn)程時,通常有3個打開文件描述符(0,1,2),0代表標(biāo)準(zhǔn)輸入,1代表標(biāo)準(zhǔn)輸出,2代表標(biāo)準(zhǔn)錯誤,它們統(tǒng)稱為標(biāo)準(zhǔn)IO。 .當(dāng)多個描述符指向同一個文件,每個文件描述符仍保持他獨(dú)特的性能。 .由于文件描述符在一個進(jìn)程中是特有的,因此不能在多個進(jìn)程中間實(shí)現(xiàn)共享,而唯一的例外是在父/子進(jìn)程之間,當(dāng)一個進(jìn)程調(diào)用fork時,調(diào)用fork時打開的所有文件在子進(jìn)程和父進(jìn)程中仍然是打開的,而且子進(jìn)程寫入文件描述符會影響到父進(jìn)程的同一文件描述符,反之亦然。2.4 Linux進(jìn)程間關(guān)系進(jìn)程之間有父子關(guān)系,如果一個進(jìn)程創(chuàng)建多個子進(jìn)程,那這些子進(jìn)程之間就有了兄弟關(guān)系。Linux中,進(jìn)程0和進(jìn)程1由內(nèi)核創(chuàng)建,進(jìn)程

46、1(init)是其他所有進(jìn)程的祖先。在進(jìn)程描述符表task_struct結(jié)構(gòu)中,以下字段表示進(jìn)程間的關(guān)系:Real_parent:指向創(chuàng)建進(jìn)程的P的進(jìn)程的描述符,如果P的父進(jìn)程不存在,就指向進(jìn)程1的描述符。Parent:指向P的當(dāng)前父進(jìn)程,往往與real_parent一致。當(dāng)出現(xiàn)Q進(jìn)程向P發(fā)出跟蹤調(diào)試ptrace()系統(tǒng)調(diào)用時,該字段指向Q進(jìn)程描述符。Children:一個鏈表頭,該字段指向Q進(jìn)程描述符。Sibling:指向兄弟進(jìn)程鏈表的下一個元素或前一個元素的指針。另外,進(jìn)程間還存在其他關(guān)系:登錄會話關(guān)系、進(jìn)程組關(guān)系、線程組關(guān)系、跟蹤調(diào)試關(guān)系。在task_struct結(jié)構(gòu)中,以下字段表示這些

47、關(guān)系(假設(shè)當(dāng)前進(jìn)程為P):Group_leader:P所在進(jìn)程組的領(lǐng)頭進(jìn)程的描述符指針;Signal->pgrp:P所在進(jìn)程組的領(lǐng)頭進(jìn)程的PID;Tgid:P所在線程組的領(lǐng)頭進(jìn)程PID;Signal->session:一個鏈表頭,鏈表中的所有元素是被調(diào)試器程序跟蹤的P子進(jìn)程;Ptrace_list:當(dāng)P被調(diào)試跟蹤時,指向調(diào)試跟蹤進(jìn)程的父進(jìn)程鏈表的前一個和下一個元素。2.5 進(jìn)程的創(chuàng)建創(chuàng)建一個進(jìn)程的系統(tǒng)調(diào)用很簡單,我們只要調(diào)用fork函數(shù)就可以了。 #include<unistd.h> #include<sys/types.h> pid_t fork(); 當(dāng)

48、一個進(jìn)程調(diào)用了fork以后,系統(tǒng)會創(chuàng)建一個子進(jìn)程。這個子進(jìn)程和父進(jìn)程不同的地方只有他的進(jìn)程ID和父進(jìn)程ID,其他的都是一樣。就象符進(jìn)程克隆(clone)自己一樣。當(dāng)然創(chuàng)建兩個一模一樣的進(jìn)程是沒有意義的。為了區(qū)分父進(jìn)程和子進(jìn)程,我們必須跟蹤fork的返回值。當(dāng)fork掉用失敗的時候(內(nèi)存不足或者是用戶的最大進(jìn)程數(shù)已到)fork返回-1,否則fork的返回值有重要的作用。對于父進(jìn)程fork返回子進(jìn)程的ID,而對于fork子進(jìn)程返回0。我們就是根據(jù)這個返回值來區(qū)分父子進(jìn)程的。父進(jìn)程為什么要創(chuàng)建子進(jìn)程呢?前面我們已經(jīng)說過了Linux是一個多用戶操作系統(tǒng),在同一時間會有許多的用戶在爭奪系統(tǒng)的資源。有時進(jìn)

49、程為了早一點(diǎn)完成任務(wù)就創(chuàng)建子進(jìn)程來爭奪資源。一旦子進(jìn)程被創(chuàng)建,父子進(jìn)程一起從fork處繼續(xù)執(zhí)行,相互競爭系統(tǒng)的資源。有時候我們希望子進(jìn)程繼續(xù)執(zhí)行,而父進(jìn)程阻塞直到子進(jìn)程完成任務(wù)。這個時候我們可以調(diào)用wait或者waitpid系統(tǒng)調(diào)用。 #include <unistd.h>#include <sys/types.h>pid_t wait(int *stat_loc); pid_t waitpid(pid_t pid,int *stat_loc,int options); wait系統(tǒng)調(diào)用會使父進(jìn)程阻塞直到一個子進(jìn)程結(jié)束或者是父進(jìn)程接受到了一個信號。如果沒有父進(jìn)程沒有子進(jìn)

50、程或者他的子進(jìn)程已經(jīng)結(jié)束了wait會立即返回。成功時(因一個子進(jìn)程結(jié)束)wait將返回子進(jìn)程的ID,否則返回-1,并設(shè)置全局變量errno.stat_loc是子進(jìn)程的退出狀態(tài)。子進(jìn)程調(diào)用exit,_exit 或者是return來設(shè)置這個值。 為了得到這個值Linux定義了幾個宏來測試這個返回值。 WIFEXITED:判斷子進(jìn)程退出值是非0 WEXITSTATUS:判斷子進(jìn)程的退出值(當(dāng)子進(jìn)程退出時非0)。 WIFSIGNALED:子進(jìn)程由于有沒有獲得的信號而退出。 WTERMSIG:子進(jìn)程沒有獲得的信號號(在WIFSIGNALED為真時才有意義)。 waitpid等待指定的子進(jìn)程直到子進(jìn)程返回

51、。如果pid為正值則等待指定的進(jìn)程(pid)。如果為0則等待任何一個組ID和調(diào)用者的組ID相同的進(jìn)程。為-1時等同于wait調(diào)用。小于-1時等待任何一個組ID等于pid絕對值的進(jìn)程。 stat_loc和wait的意義一樣。 options可以決定父進(jìn)程的狀態(tài)??梢匀蓚€值 WNOHANG:父進(jìn)程立即返回當(dāng)沒有子進(jìn)程存在時。 WUNTACHED:當(dāng)子進(jìn)程結(jié)束時waitpid返回,但是子進(jìn)程的退出狀態(tài)不可得到。 父進(jìn)程創(chuàng)建子進(jìn)程后,子進(jìn)程一般要執(zhí)行不同的程序。為了調(diào)用系統(tǒng)程序,我們可以使用系統(tǒng)調(diào)用exec族調(diào)用.exec族調(diào)用有著5個函數(shù)。 #include <unistd.h>int

52、 execl(const char *path,const char *arg,.); int execlp(const char *file,const char *arg,.); int execle(const char *path,const char *arg,.); int execv(const char *path,char *const argv); int execvp(const char *file,char *const argv): exec族調(diào)用可以執(zhí)行給定程序,這樣父進(jìn)程與子進(jìn)程各行各職。2.6 Linux進(jìn)程間通信的介紹 Linux的進(jìn)程間通信,如圖2.1示。

53、其中,最初Unix IPC包括:管道、FIFO、信號;System V IPC包括:System V消息隊(duì)列、System V信號燈、System V共享內(nèi)存區(qū);Posix IPC包括: Posix消息隊(duì)列、Posix信號燈、Posix共享內(nèi)存區(qū)。有兩點(diǎn)需要簡單說明一下:1)由于Unix版本的多樣性,電子電氣工程協(xié)會(IEEE)開發(fā)了一個獨(dú)立的Unix標(biāo)準(zhǔn),這個新的ANSI Unix標(biāo)準(zhǔn)被稱為計(jì)算機(jī)環(huán)境的可移植性操作系統(tǒng)界面(PSOIX)。現(xiàn)有大部分Unix和流行版本都是遵循POSIX標(biāo)準(zhǔn)的,而Linux從一開始就遵循POSIX標(biāo)準(zhǔn);2)BSD并不是沒有涉足單機(jī)內(nèi)的進(jìn)程間通信(socket本身就可以用于單機(jī)內(nèi)的進(jìn)程間通信)。事實(shí)上,很多Unix版本的單機(jī)IPC留有BSD的痕跡,如4.4BSD支持的匿名內(nèi)存映射、4.3+BSD對可靠信號語義的實(shí)現(xiàn)等等。圖2.1 Linux所繼承

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論