![洛陽師范學院UNIX實驗報告_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/ce3b3bad-1c59-4c8b-bce4-de6e63f7d875/ce3b3bad-1c59-4c8b-bce4-de6e63f7d8751.gif)
![洛陽師范學院UNIX實驗報告_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/ce3b3bad-1c59-4c8b-bce4-de6e63f7d875/ce3b3bad-1c59-4c8b-bce4-de6e63f7d8752.gif)
![洛陽師范學院UNIX實驗報告_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/ce3b3bad-1c59-4c8b-bce4-de6e63f7d875/ce3b3bad-1c59-4c8b-bce4-de6e63f7d8753.gif)
![洛陽師范學院UNIX實驗報告_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/ce3b3bad-1c59-4c8b-bce4-de6e63f7d875/ce3b3bad-1c59-4c8b-bce4-de6e63f7d8754.gif)
![洛陽師范學院UNIX實驗報告_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/ce3b3bad-1c59-4c8b-bce4-de6e63f7d875/ce3b3bad-1c59-4c8b-bce4-de6e63f7d8755.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、洛陽師范學院UNIX實驗報告作者:日期:評語與成績:測試過程:(實驗中出現(xiàn)的問題、錯誤、解決方法)基本算法思想掌握之后,程序的大體流程可以寫出來, 具體的問題,就是有時候會因為對個別函數(shù)的參數(shù)應用出問題 老師有問必答,全部都給解決了?教師簽名:年實驗總結(jié):?洛陽師范學院信息技術學院軟件實驗報告專業(yè):軟件工程課程:UNIX高級編程學號:姓名:班級:實驗名稱終端與作業(yè)控制實驗類型驗證型實驗時間20 12 -5-23實驗環(huán)境虛擬機下裝有1 i nux操作系統(tǒng)的windows操作系統(tǒng)實驗目的與要求:掌握進程組、會話期、作業(yè)、控制終端的概念;掌握作業(yè)的前臺、后臺切換、終端輸出控制;實驗內(nèi)容:1、有關知識
2、點的驗證1)寫一段包含fo rk調(diào)用的程序,驗證父子進程是否在同一組中2、2)3)4)5)6)1)2)3)4)實驗步驟:(算法描述、源程序、操作步驟和方法)有關知識點的驗證寫一段包含fork調(diào)用的程序,驗證父子進程是否在同一組中-inc iu.de<&tdio “ h aTill- liidpsTdllb.lr-iiLciudG<uni&td.i>.r T iTiainC: n*argv )(調(diào)用set pgi d函數(shù),分別設置父進程和子進程為一個新組的組長進程,輸出設置后的組ID,驗證調(diào)用是否成功如果一個進程在創(chuàng)建子進程后,希望該子進程為一個新組的組長進程,
3、set pgid應該被調(diào)用幾次?在什么時機進行調(diào)用如果子進程因執(zhí)行exec函數(shù)而加載新程序執(zhí)行,此時父進程調(diào)用set pg1 d函數(shù)設置子進程的組ID是否還能成功?驗證你的結(jié)論編寫一段程序,要求調(diào)用f ork在子進程中建立一個新的對話期。驗證步驟5)中子進程的ID和組I D是否相等?是否能夠向終端輸出打印信息?驗證進程終止及同步關系編寫二個程序,每個程序都輸出其組ID,通過管道線在命令行執(zhí)行。驗證這兩個程序是否屬于同一作業(yè);將上述命令行在后臺執(zhí)行,觀察輸出的情況,并解釋原因參照教材P18 9的例子,使用stty命令禁止后臺進程的終端輸出參照教材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有運行結(jié)果可知,子進程和
5、父進程在同一實際組里。調(diào)用setgid函數(shù),分別設置父進程和子進程為一個新組的組長進程,輸出設置后的組I D,驗證調(diào)用是否成功'uncludc;<feTditj .li>4inciude<stdlib.h>帝nrludevunistcLh丄L Jiialn<_LnL argc衣 argv)setpg i d(設置進程組識別碼)相關函數(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 (;運行結(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指定進程所屬的組識別碼設為參數(shù)pgid指定的組識別碼。如果參數(shù)pid為0,則會用來設置目前進程的組識別碼,如果參數(shù)pgi d為0,則會以目前進程的進程識別碼來取代。返回值執(zhí)行成功則返回組識別碼,如果有錯誤則返回-1
9、,錯誤原因存于e rrno 中。錯誤代碼EINV AL參數(shù)pgid小于0。EP ER M進程權限不足,無法完成調(diào)用。E S RC H找不到符合參數(shù)pid指定的進程如果一個進程在創(chuàng)建子進程后,希望該子進程為一個新組的組長進程,se t pgi d應該被調(diào)用幾次?在什么時機進行調(diào)用 ?首先應該fork 個子進程,如果成功,查看當前進程的組ID之后使用Setp gid這個函數(shù)將子進程設置為新租的組長進程。如果子進程因執(zhí)行ex ec函數(shù)而加載新程序執(zhí)行,此時父進程調(diào)用set pgid函數(shù)設置子進程的組ID是否還能成功?驗證你的結(jié)論編寫一段程序,要求調(diào)用f o rk在子進程中建立一個新的對話期。準備的二
10、進制程序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? - 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 亞寮!有運行結(jié)果可知,子進程在成為會話組組長時,并沒有想課本上所說的那樣(失去中斷控制權)但是已經(jīng)成為另外一個組的進程了驗證步驟5)中子進程的I
18、D和組I D是否相等?是否能夠向終端輸出打印信息在子進程執(zhí)行的程序中加上一句輸出當前進程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);編寫二個程序,每個程序都輸出其組I D,程序是否屬于同一作業(yè);通過管道線在命令行執(zhí)行。驗證這兩個rootSlocalhost niengyaweiJ# vi session .c rootlocalhost mengvfl訓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!驗證進程終止及同步關系wor k 1 .c文件內(nèi)容不屬于同一個作業(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度綜合獵頭合作協(xié)議-年度人才引進計劃2篇
- 2025-2030全球來曲唑片行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國皮膚擴散吸收試驗行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國ZSM-5沸石膜行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球車規(guī)級射頻芯片行業(yè)調(diào)研及趨勢分析報告
- 辦公室裝修合同終止協(xié)議書
- 教育培訓中心裝飾維修協(xié)議
- 倉儲管理居間服務協(xié)議
- 云計算平臺運營托管合同
- 供水管網(wǎng)改造工程施工合同
- 重建成長型思維課件
- 電捕焦油器火災爆炸事故分析
- 質(zhì)量問題分析及措施報告
- 汽修廠安全風險分級管控清單
- 現(xiàn)代通信原理與技術(第五版)PPT全套完整教學課件
- 病例展示(皮膚科)
- GB/T 39750-2021光伏發(fā)電系統(tǒng)直流電弧保護技術要求
- DB31T 685-2019 養(yǎng)老機構(gòu)設施與服務要求
- 燕子山風電場項目安全預評價報告
- 高一英語課本必修1各單元重點短語
- 完整版金屬學與熱處理課件
評論
0/150
提交評論