




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、洛陽師范學(xué)院UNIX實(shí)驗(yàn)報(bào)告作者:日期:評語與成績:測試過程:(實(shí)驗(yàn)中出現(xiàn)的問題、錯(cuò)誤、解決方法)基本算法思想掌握之后,程序的大體流程可以寫出來, 具體的問題,就是有時(shí)候會因?yàn)閷€(gè)別函數(shù)的參數(shù)應(yīng)用出問題 老師有問必答,全部都給解決了?教師簽名:年實(shí)驗(yàn)總結(jié):?洛陽師范學(xué)院信息技術(shù)學(xué)院軟件實(shí)驗(yàn)報(bào)告專業(yè):軟件工程課程:UNIX高級編程學(xué)號:姓名:班級:實(shí)驗(yàn)名稱終端與作業(yè)控制實(shí)驗(yàn)類型驗(yàn)證型實(shí)驗(yàn)時(shí)間20 12 -5-23實(shí)驗(yàn)環(huán)境虛擬機(jī)下裝有1 i nux操作系統(tǒng)的windows操作系統(tǒng)實(shí)驗(yàn)?zāi)康呐c要求:掌握進(jìn)程組、會話期、作業(yè)、控制終端的概念;掌握作業(yè)的前臺、后臺切換、終端輸出控制;實(shí)驗(yàn)內(nèi)容:1、有關(guān)知識
2、點(diǎn)的驗(yàn)證1)寫一段包含fo rk調(diào)用的程序,驗(yàn)證父子進(jìn)程是否在同一組中2、2)3)4)5)6)1)2)3)4)實(shí)驗(yàn)步驟:(算法描述、源程序、操作步驟和方法)有關(guān)知識點(diǎn)的驗(yàn)證寫一段包含fork調(diào)用的程序,驗(yàn)證父子進(jìn)程是否在同一組中-inc iu.de<&tdio “ h aTill- liidpsTdllb.lr-iiLciudG<uni&td.i>.r T iTiainC: n*argv )(調(diào)用set pgi d函數(shù),分別設(shè)置父進(jìn)程和子進(jìn)程為一個(gè)新組的組長進(jìn)程,輸出設(shè)置后的組ID,驗(yàn)證調(diào)用是否成功如果一個(gè)進(jìn)程在創(chuàng)建子進(jìn)程后,希望該子進(jìn)程為一個(gè)新組的組長進(jìn)程,
3、set pgid應(yīng)該被調(diào)用幾次?在什么時(shí)機(jī)進(jìn)行調(diào)用如果子進(jìn)程因執(zhí)行exec函數(shù)而加載新程序執(zhí)行,此時(shí)父進(jìn)程調(diào)用set pg1 d函數(shù)設(shè)置子進(jìn)程的組ID是否還能成功?驗(yàn)證你的結(jié)論編寫一段程序,要求調(diào)用f ork在子進(jìn)程中建立一個(gè)新的對話期。驗(yàn)證步驟5)中子進(jìn)程的ID和組I D是否相等?是否能夠向終端輸出打印信息?驗(yàn)證進(jìn)程終止及同步關(guān)系編寫二個(gè)程序,每個(gè)程序都輸出其組ID,通過管道線在命令行執(zhí)行。驗(yàn)證這兩個(gè)程序是否屬于同一作業(yè);將上述命令行在后臺執(zhí)行,觀察輸出的情況,并解釋原因參照教材P18 9的例子,使用stty命令禁止后臺進(jìn)程的終端輸出參照教材P18 9的例子,使用fg命令切換后臺作業(yè)為前提作
4、業(yè)ppid;printfC"befOLe forkyt/');1t(Cpid=forkf)<0)printf("fork error! n") exit(i);eJ-ise1fCpid=0)xootlocalhost Toowiocalliost before fork chiltrs gid=o parent's gid=Or H H 1 L .dprintflFillcTw gid=W'n'' ” getgidC); exit(O);gcc getgid.匚一o gtgid ./gergid有運(yùn)行結(jié)果可知,子進(jìn)程和
5、父進(jìn)程在同一實(shí)際組里。調(diào)用setgid函數(shù),分別設(shè)置父進(jìn)程和子進(jìn)程為一個(gè)新組的組長進(jìn)程,輸出設(shè)置后的組I D,驗(yàn)證調(diào)用是否成功'uncludc;<feTditj .li>4inciude<stdlib.h>帝nrludevunistcLh丄L Jiialn<_LnL argc衣 argv)setpg i d(設(shè)置進(jìn)程組識別碼)相關(guān)函數(shù)g eg id,setpg rp , get p grppid_t pid;printf(rbefore fork jf ); 'f<(pid=fork()<0)printf("fork erro
6、r fn exlt(i):elsetpid=t)printf ("before setgid 匸hild's gid=-t.dii" ,gGtgid(>); 17(£etgid<2)<0)printfC'set child's gid failyd!n"); exiT(1>print于("Rfrer setgid gi.getgid);elseprintf (d ;irpr t ' g : cU'dn " , getgidC ):匸rinTf (”耳er parent
7、39;s gid fai ed!n''): cxitC:eiiepriTitf三pTa-fi p汩rpriT'm,Eprgidf):px-i r (;運(yùn)行結(jié)果可知,修改成功:routlocalhoET inengvavrei rooti&Iocalhost itiengyawei 'rDotOlDcalhost mengyawei LroQtSlocalhoEt mengyawei岸 before fork before setgid child's gitiO after setgid gid=2 before setgid parent
8、9;s gid-0 after SGtgid p.aTent' s giti=3touch setgid.cvi setgid.c gcc setgid.c -o sotgid ./setgid表頭文件#in定義函數(shù)in t函數(shù)說明u de<unistd.h>etp gid( pidt P id,p id _t pgi d );set p gi d()將參數(shù)pid指定進(jìn)程所屬的組識別碼設(shè)為參數(shù)pgid指定的組識別碼。如果參數(shù)pid為0,則會用來設(shè)置目前進(jìn)程的組識別碼,如果參數(shù)pgi d為0,則會以目前進(jìn)程的進(jìn)程識別碼來取代。返回值執(zhí)行成功則返回組識別碼,如果有錯(cuò)誤則返回-1
9、,錯(cuò)誤原因存于e rrno 中。錯(cuò)誤代碼EINV AL參數(shù)pgid小于0。EP ER M進(jìn)程權(quán)限不足,無法完成調(diào)用。E S RC H找不到符合參數(shù)pid指定的進(jìn)程如果一個(gè)進(jìn)程在創(chuàng)建子進(jìn)程后,希望該子進(jìn)程為一個(gè)新組的組長進(jìn)程,se t pgi d應(yīng)該被調(diào)用幾次?在什么時(shí)機(jī)進(jìn)行調(diào)用 ?首先應(yīng)該fork 個(gè)子進(jìn)程,如果成功,查看當(dāng)前進(jìn)程的組ID之后使用Setp gid這個(gè)函數(shù)將子進(jìn)程設(shè)置為新租的組長進(jìn)程。如果子進(jìn)程因執(zhí)行ex ec函數(shù)而加載新程序執(zhí)行,此時(shí)父進(jìn)程調(diào)用set pgid函數(shù)設(shè)置子進(jìn)程的組ID是否還能成功?驗(yàn)證你的結(jié)論編寫一段程序,要求調(diào)用f o rk在子進(jìn)程中建立一個(gè)新的對話期。準(zhǔn)備的二
10、進(jìn)制程序mengya wei的源程序4±tiLiudy<&tdio .h>Tine liide<stcn-ib ,li>丄"L aidin(tL L argc,uhu匸 drgv)卜 iritf ("th_L s is in progrcini JLiengydtTiei .c 1,11"斗丄njJ._ick修itiij . h> iiiic l.idfestdlih .hr片i nc 1 idf <JT1 istd .h>芹 1 Ilf l.i1r<>V5./'.vaiT.h-&qu
11、ot;ii. iiitiiiX . H di'1,' i Id - irgv)rootlocalhoBt mengyawei# ./uiengyaisvei this is in program mengvawei*c!rootlocalhost niangyawei# gee esetpgid.c -o esetpgid root'll oca 1 host mengyawei Vesex pgid before fork?this is child!before execIp?exec丄p error!this is parent!before etgid!setg
12、id success!p 1 fi_t pid;pnrttC "betcr tork ! n'):i -(pidfurkC)<)printfilled!ii'); e)fi t( I):elair 15 (pidD)printf f "t'T , i£ r"I TH n"); print tf "b'tcr exQclp ' ii"):11 (txetlpC,' u:il 丄 dix" t ( - Il -l 'printf ( "cxcclp
13、 crrcr! ,r/' py-it( 11:printf("execlp successf -.tV);L' I ;Iprimf ("this is parentE .n'"); printf C "before setgid! ii");1 *(setgid(p-i d)<0)prlTitf C''setgld fai 1 ed! n'J: exit(i);亠L(fēng)? - sl ' i I u J 2丄-,丄 LllItz' s I _1_L' .J -r rttjf
14、lL flrgc,I 、 * irgvLJP二cLl pi Jhprii.LlC Lul-jiL:.')Ep±d=£ork) k.l i二r :rL t JI ; rk -1 tif > u>二工二nt £( " t:】is ia 二:child !' li "); 撲_tLtF廠 bjfurj 沁n =):pr二ntf ("Eid=-i;Tf .gepgidtpid i'l; -ri <iFr<ndO<fi Jprintff"i = Lt.J id-led',l
15、i cviTf L);pridtfsixL.es b tut Lhi、 seuldniiL wi" no I c.ibply' '.n.")printf ( "This is in p ar ent! ii"):/sleep(20);pTintf ( " ctiild' s 呂id now is -dn" , getpgidCpid); exit(L> );printf C "setuid success n'');exit(O);in parent!'root(&
16、;localhoEt niengyawGivi session.crootlocalhosit men呂v旦wei弁 gcc session- c -o session rootOlocalhost mengvawei# . /session before fork rthis is in child!before sessiongid=3245session success but this sent arise will not display? this isdiu' .h;lucl-iiTiistd.h-iiK Iudt!bL d 1 丄 b .h>in- inaif (
17、n:' t argc , -b i?- argv)pTin tf ( "nor; 5 in work . c f' n"); prirtf C "burkJL' b pid- ulL-ul" , getpidO);pTir tf C "Kork : ' E pid=-;.dn" , getpgid(getpid);child's gid now is 亞寮!有運(yùn)行結(jié)果可知,子進(jìn)程在成為會話組組長時(shí),并沒有想課本上所說的那樣(失去中斷控制權(quán))但是已經(jīng)成為另外一個(gè)組的進(jìn)程了驗(yàn)證步驟5)中子進(jìn)程的I
18、D和組I D是否相等?是否能夠向終端輸出打印信息在子進(jìn)程執(zhí)行的程序中加上一句輸出當(dāng)前進(jìn)程pi d的輸出語句既可wor k2. c文件內(nèi)容:.h>巾節(jié). 11 '¥ lUL 亠 LL dw <-/anis. td Ji ;inT main (nr T argc,*-i.ir argvE )prinif (''nnb' is in work? . cI ''.n");printf ('"iwrk2 * s pid.=, getpidf )>intf C"K«nTk2'
19、 sgetpgidCgetpidC)5;pxintfC "biiore session! n");intf ("chiled' £ pid=niTi" ,getpid(); printf("chi led's,getpgid(pid);編寫二個(gè)程序,每個(gè)程序都輸出其組I D,程序是否屬于同一作業(yè);通過管道線在命令行執(zhí)行。驗(yàn)證這兩個(gè)rootSlocalhost niengyaweiJ# vi session .c rootlocalhost mengvfl訓(xùn)ei芹 gcc session.c -o session rao
20、tlocalhoEt niengyawei J-# . / session before fork!this is in child!before session!chiled's pid=3254chiled'& gid-3253seEsion success but this sentan&e will not display! this is in parent!child's gid now is 3254!驗(yàn)證進(jìn)程終止及同步關(guān)系wor k 1 .c文件內(nèi)容不屬于同一個(gè)作業(yè)原因:不知道root馭localhogt root&localho
21、st root&localhost now is Tn workl.c!mengvawei# mengvawei. # 皿engvawei#worki* s pid-3270 workl's gid=327O rootOlocalhost itieiigvawei Js rootglocalhost niengvawei # roor(91ocalhost mengv/w覽ij* now IS ill work2c!workZ's pid=3279 works's gid=3279vi worfcL.c gcc urorkl. c -o ./worklvi workZ.cgcc wQrk2.c -o./work2worklworks1)將上述命令行在后臺執(zhí)行,觀察輸出的情況,并解釋原因roO't'i?loc a IhostEL 3313rootQldJdalhostmengyawei癢cat >
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教學(xué)內(nèi)容持續(xù)更新計(jì)劃
- 個(gè)人建房建筑合同樣本
- 出售器材合同標(biāo)準(zhǔn)文本
- 供門窗合同標(biāo)準(zhǔn)文本
- 入職協(xié)議合同范例
- 企業(yè)與學(xué)校合同樣本格式
- 上海預(yù)售合同標(biāo)準(zhǔn)文本
- Epc合同樣本 課程
- 庭院花卉草坪施工方案
- 電池設(shè)計(jì)仿真考核試卷
- 2025合同模板個(gè)人車位轉(zhuǎn)讓合同 范本
- 企業(yè)集團(tuán)文件與檔案管理制度
- 2024福建漳州市九龍江集團(tuán)有限公司招聘10人筆試參考題庫附帶答案詳解
- 公安審訊技巧課件
- 采礦工程畢業(yè)設(shè)計(jì)(論文)-趙固二礦180萬ta新井設(shè)計(jì)
- 足球比賽登記表
- Bimco標(biāo)準(zhǔn)船舶管理合同(新版)
- 煙草專賣局日常績效考評實(shí)施辦法
- 基于仿生原理風(fēng)電葉片氣動(dòng)控制研究 宋娟娟
- 商業(yè)中心項(xiàng)目可行性研究報(bào)告
- 課程設(shè)計(jì)-聚丙烯酰胺生產(chǎn)工藝設(shè)計(jì)
評論
0/150
提交評論