下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
進程管理實驗報告一、進程與線程1.實驗?zāi)康模?.通過本實驗學(xué)習(xí)Linux中創(chuàng)建進程的方法。2.學(xué)習(xí)系統(tǒng)調(diào)用fork的使用方法。3.學(xué)習(xí)系統(tǒng)調(diào)用exec族調(diào)用的使用方法。2.實驗準備進程的創(chuàng)建創(chuàng)建一個進程的系統(tǒng)調(diào)用很簡單,只要調(diào)用fork函數(shù)就可以了。#include<unistd.h>pid_tfork();當一個進程調(diào)用了fork以后,系統(tǒng)會創(chuàng)建一個子進程,這個子進程和父進程是不同的地方只有它的進程ID和父進程ID,其他的都一樣,就像父進程克?。╟lone)自己一樣,當然創(chuàng)建兩個一模一樣的進程是沒有意義的,為了區(qū)分父進程和子進程,我們必須跟蹤fork調(diào)用返回值。當fork調(diào)用失敗的時候(內(nèi)存不足或者是用戶的最大進程數(shù)已到)fork返回—1,否則fork的返回值有重要的作用。對于父進程fork返回子進程ID,而對于fork子進程返回0,我們就是根據(jù)這個返回值來區(qū)分父子進程的。2.關(guān)于fork的說明使用該函數(shù)時,該函數(shù)被調(diào)用一次,但返回兩次,兩次返回的區(qū)別是子進程的返回值是0,而父進程的返回值則是新子進程的進程ID。將子進程ID返回給父進程的理由是:因為一個進程的子進程可以多于一個,所以沒有一個函數(shù)可以是一個子進程獲得其所有子進程的進程ID。而fork函數(shù)使子進程得到的返回值是0的理由是:一個子進程只會有一個父進程,所以子進程總是可以調(diào)用函數(shù)getpid獲得其父進程的進程ID。3.系統(tǒng)調(diào)用exec族調(diào)用的說明父進程創(chuàng)建子進程后,子進程一般要執(zhí)行不同的程序。為了調(diào)用系統(tǒng)程序,我們可以使用系統(tǒng)調(diào)用exec族調(diào)用。Exec族調(diào)用有以下五個函數(shù):intexecl(constchar*path,constchar*arg,…);intexeclp(constchar*file,constchar*arg,…);intexecle(constchar*path,constchar*arg,…);intexecv(constchar*path,constchar*argv[]);intexecvp(constchar*file,constchar*argv[]);exec族調(diào)用可以執(zhí)行給定程序。關(guān)于exec族調(diào)用的詳細解說可以參考系統(tǒng)手冊。3.實驗內(nèi)容及步驟編程實現(xiàn)使用fork函數(shù)創(chuàng)建子進程,以及在子進程中調(diào)用exec族調(diào)用的程序。1、進入Linux操作系統(tǒng)中的終端顯示如下:在系統(tǒng)shell提示符下輸入vi及文件名后,進就入vi編輯畫面。如果系統(tǒng)內(nèi)還不存在該文件,就意味著要穿件文件。如果系統(tǒng)內(nèi)存在該文件,就意味著要編輯該文件。下面就是用vi編輯器創(chuàng)建文件的實例。{root@localhost}#vifilename此后文件的編譯都使用同樣的方法,不再贅述。2、目前,Linux系統(tǒng)下的應(yīng)用程序多由C語言編寫,最常用的C語言編譯器是GCC(GNUCompilerCollection),它是GNU項目中符合ANSIC標準的編譯系統(tǒng),能夠編譯用C、C++等語言編寫的程序。在使用GCC之前,下面的這個例子能夠幫助用戶迅速理解GCC的工作原理,并將其立即運用到實際的項目開發(fā)中去。首先用vi編譯器按照下面的內(nèi)容創(chuàng)建一個名為hello.c的文件。#filename:hello.c#includeIntmain(void){
printf(“HelloWorld,Linuxprogramming!”);return0;}然后執(zhí)行下面的命令編譯和運行這段程序:#gcchello.c–ohello#./helloHelloworld,Linuxprogramming!此后的程序均按照這種方法運行,下文中將不再贅述。4.參考程序1、使用fork函數(shù)創(chuàng)建子進程的程序fork.c#include<stdio.h>#include<sys/types.h>#include<unistd.h>intmain(intargc,char*argv[]){ pid_tchildpid; if((childpid=fork())==0){ printf("Iamthechildprocess,myIDis%ld\n",(long)getpid()); } elseif(childpid>0){ printf("Iamtheparentprocess,myIDis%ld\n",(long)getpid()); }}2、創(chuàng)建子進程后調(diào)用系統(tǒng)調(diào)用execlp的程序execlp.c#include<stdio.h>#include<unistd.h>intmain(intargc,char*argv[]){ pid_tpid; pid=fork(); if(pid<0){ fprintf(stderr,"ForkFailed"); exit(-1); } elseif(pid==0){ execlp("/bin/date","date",NULL);
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高端裝備制造研發(fā)合同
- 2025年度二零二五木坑果場承包經(jīng)營與農(nóng)產(chǎn)品出口合同3篇
- 2024建材銷售合作協(xié)議書范本
- 2024虛擬現(xiàn)實游戲內(nèi)容制作及授權(quán)合同
- 2024年電廠煤炭供應(yīng)與支付條款標準協(xié)議版B版
- 2024年跨境電商倉儲物流合同
- 2024年項目投資與合作合同
- 2025年度智能家居系統(tǒng)設(shè)計與裝修合同范本3篇
- 2025便利店品牌授權(quán)與區(qū)域管理合同范本3篇
- 2024年環(huán)保項目投資合同投資金額與環(huán)保效果
- 安全管理制度執(zhí)行情況
- (高清版)JTG 2232-2019 公路隧道抗震設(shè)計規(guī)范
- DZ∕T 0173-2022 大地電磁測深法技術(shù)規(guī)程(正式版)
- 二年級下冊數(shù)學(xué)口算題天天練帶答案
- 合作學(xué)習(xí)構(gòu)建初中語文分層教學(xué)思考
- 2021-2022學(xué)年浙江省紹興市上虞區(qū)人教版四年級上冊期末質(zhì)量評估數(shù)學(xué)試卷
- 成功九大理念
- 初中英語七選五經(jīng)典5篇(附帶答案)
- 原發(fā)性硬化性膽管炎的課件
- 產(chǎn)品生產(chǎn)進度計劃匯總
- 東軟新一代電子病歷方案課件
評論
0/150
提交評論