




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程編號(hào):b080103040linux操作系統(tǒng)實(shí)驗(yàn)報(bào)告姓名姚柯杰學(xué)號(hào)20126266班級(jí)軟工1212指導(dǎo)教師石凱實(shí)驗(yàn)名稱linux操作系統(tǒng)實(shí)驗(yàn)開(kāi)設(shè)學(xué)期2014-2015 第一學(xué)期開(kāi)設(shè)時(shí)間第11周第18周報(bào)告日期評(píng)定成績(jī)?cè)u(píng)定人石凱評(píng)定日期東北大學(xué)軟件學(xué)院一、舉例列出常用的shell命令使用方法1目錄操作(1) mkdir abc創(chuàng)建一個(gè)目錄abc(2) cd /abc將工作目錄改變到abc(3) cd改變當(dāng)前目錄到主目錄ejpepopropo:*- x文件(e) »2(e> »«(¥)搜實(shí)終端(pepopropo *)s akdir abc(pep
2、opropo *j$ cd abcpepopropo abc$ cdpep(m3propo -is |(5) is -1輸出當(dāng)前fl錄內(nèi)容的長(zhǎng)列表,每個(gè)冃錄或文件占一行pepo<§)propo:*. x文件(e)絢說(shuō)(討 «§(v)姑(s)終鏘(d幫助(旦)(pepopropo -*$ mkdir abcpepopropo -$ cd abc (pepopropo abc|$ cd (pepopropo is abc shiyan公共的 揆板 視頻 囲片 文檔 t« 音樂(lè) 桌面 pepopropo t$ is l 總用且4e drwxrwxr d
3、wr dr¥»xr-xr drwxrxr drwxrxr drvxr xr drxr-xr drwxrxr drwxrxr drv/xr xr.(pepopropo *$ |2 pepo pepo 46962 pepo pepo 40962 pepo pepo 40962 pepo pepo 40962 pepo pepo 40962 pepo pepo 40962 pepo pepo 40962 pepo pepo 40962 pepo pepo 46962 pepo pepo 409612月12月12月 12月12月12月12月 12月12月12月30 18:43 ab
4、c24 15:20 shiyan3 22:00 公乂的3 22:093 22:00觀頻3 22:00團(tuán)片3 22:00文檔3 22:00 ktt3 22:003 22:00戊向(6)pwd顯示當(dāng)前目錄的全路徑c3pepopropo:-文件(e)縮55(e)查看(y)獲實(shí)(s)終端 幫助(旦)pepopropo -*$ mkdir abc jpepopropo j$ cd abc pepopropo abc$ cd pepopropo t$ is abc shiyan公共的梗板視頻圖片文檔下製音樂(lè)蟲(chóng)囲 pepopropo *$ is l 總用雖40drx rwx r - x.2pepopepo4
5、09612月3018:43abc.drwx rwx r - x.2pepopepo409612月2415:29shiyanbdrwxr-xr-x.2pepopepo409612月322:00公共的drwxrxrx2pepopepo409612月322:00模板drvxr-xr-x.2pepopepo409612月322:00視頻drxxrx.2pepopepo469612月322:00圖片drwxr-xr-x.2pepopepo469612月322:00文檔d rv.*x r - x r - x 2pepopepo469612月322:00tttd rv/x r - x r x 2pepope
6、po409612月322:66音*d rwx廠x rx.2pepopepo409612月322:06pepopropo *$ pwd /home/pepo pepopropo -$ |2文件顯示實(shí)用程序(1) cat mx. c顯示mx. c文件內(nèi)容分屏顯示inx. c內(nèi)容(2) more mx c(3)cat filel file2 連接 filel 和 f訂e23文件管理實(shí)用程序(1) cp f訂el file2 將文件1復(fù)制到文件2(2)mv filel file2將文件重命名為file2刪除文件filename(3)rm filenameabcjs abcj$ abcj$ abcj$
7、abc$abcjs abcjs abcj$ abcj$ abc$通過(guò)實(shí)例寫(xiě)出linux下c程序編輯運(yùn)行過(guò)程。在終端命令下輸入vi filename命令,這里我輸入vi helloworld.c創(chuàng)建并打開(kāi)helloworld.c 文件pepopropo:*/abc文件(£)彌(曰 sti(v) ss vkj(wpepopropo abcs is l2用蟲(chóng)8mrvr 1 pepo pepo 171 12月 10 68:34 ax.c -rw-rw-r- 1 pepo pepo 66 12月 30 18:57 ny.c pepopropo abc$ vi pepopropo abcj$ p
8、epopropo abcjs pepopropo abcjs pepopropo pepogpropo pepo$propo pepopropo pepopropopepopropo abc$ pepopropo abcjs pepopropo abcjs pepopropo pepog»propo pepo$propo pepopropo pepopropopepopropo abc$ pepopropo abcj$ vi helloworld pepopropo abcjs |按i進(jìn)入編輯模式,輸入下列code:# inelude <stdio.h> void mai
9、n (void)jiprintf( "hello world!nv ); 輸入:wq保存退出輸入cc helloworld.c編譯,在輸入./a.out運(yùn)行pepopropo:*/abc文件(£)須(f) b»(y)際終洪(i) wft(h)pepopropo abc$ (pepopropo abc$ (pepopropo abc$ (pepo(3propo abcjs (pepopropo abcjs pepopropo abcjs pepopropo abc$ (pepopropo abc$ (pepo0propo abcjs (pepopropo abcjs
10、 pepopropo abcjs (pepopropo abc$ (pepopropo abcjs (pepo(3propo abcjs (pepogpropo abcjs pepopropo abcjs (pepopropo abcjs (pepopropo abcjs (pepo(apropo abcjs (pepopropo abcjsvi cc vihelloworld.c heuoworld.c helloworld.c helloworld.c./aoutbash:/aout:段有那個(gè)文件或目錄 pepopropo abc$ /a.out hello world!(pepo(apr
11、opo abc$ |三、實(shí)驗(yàn)總結(jié)在實(shí)驗(yàn)一中,我初步對(duì)linux有了初步的了解,能熟練目錄和文件進(jìn)行操作,并且能 m linux進(jìn)行基本簡(jiǎn)單的基于c的編程。師傅領(lǐng)進(jìn)門(mén),修行在個(gè)人,算是通過(guò)這個(gè)實(shí)驗(yàn)進(jìn)入 了 linux 的門(mén)。實(shí)驗(yàn)二文件操作一、實(shí)現(xiàn)cp命令實(shí)現(xiàn)思路:提取出源路徑和目標(biāo)路徑到函數(shù)中,放于定義的兩個(gè)int變量,定義緩沖 區(qū)buf,對(duì)兩個(gè)變量進(jìn)行判斷,如果符合要求打開(kāi)讀取源文件信息存于緩沖區(qū),然后寫(xiě)到目 標(biāo)文件中,關(guān)閉兩個(gè)文件以實(shí)現(xiàn)等同cp效果。fxpofhkopo:x«(£)*($ fbpeporopo thiy*n$ cat copy.e include <
12、sys/type$.h> includeinclude <fcntl.h>includeincludes«(d hm(£)t«(y)($i twmd 農(nóng)"01)p9pompropo:*/fhly*n&f(argc!«3k printf(eaissing file operandn*h emitti);minllnt argc, char edrgv()( lnt fdl. fd2: lnt n: ch«r hf|w4hlf(fdlaopen(argv|l|. 0 pcrrorccaonot open*):pr
13、lntfcalsiing flit oo«ramfte); xit(l);m(fd2-cr««t(afgvui. 777hh< perror(sc>finot crent*); wiult:if(fdi>open(af9vuj. o raxm.t)m-i) perror(*cannot open*): exit(i);if(fd2»creat(«rgv(2l 777)»1)( perrorccdnnot cret*):clos(td2);ipeporopo shiyan i $ « copy.c |pepo
14、»propo »hly«nj$ |wt»lw<<n.readudl. buf. 1924h>9)(write(fd2, buf. n)|此處以helloo c文件為源文件,目標(biāo)文件l.c。pepopropo:-/shiyan文件(i)翩匡)w(v)転(s)終端(i)希助型)pepopropo pepopropo pepopropo pepopropo pepoproposhiyan$shiyan$shiyan$shiyan$ cc copy.c shiyanjs ishello.c list h process c progrss c
15、pepopropo shiyan$ ./d.out hello.c pepopropo shiyanjs is l.ccopy.vlisthh.out hello.c ss.cpepo(apropo shiyanjs cat #inelude <stdio.h>main() printf(mhellon"); return 0;progrss2c shiyan_3_2c shiyan 3c shiyan33.c sockettc l.cprocess.c progrss2.c hello.cprogrsscshiyan 3 3c socketcshiyan 3 2.c s
16、hiyan 3.cl.cpepopropo shiyans cat #inelude <stdio.h> main()printf(mhellon*); return 0;pepopropo shiyan$ 在調(diào)試cp命令中,由于一開(kāi)始并未定義緩沖區(qū),導(dǎo)致程序出錯(cuò),后假如緩沖區(qū),程序得以 正常運(yùn)行。二、實(shí)現(xiàn)is命令實(shí)現(xiàn)思路:調(diào)用dirent.h來(lái)實(shí)現(xiàn)打開(kāi)目錄流,定義變量,隨后對(duì)變量進(jìn)行判定用opendir.readdir打開(kāi)并讀取目錄流,將值傳遞給另一個(gè)變量,打印出來(lái)。pepopropo:*/shiyan文件(巳縮攝(日宜看(y)搜索(s)終端任)楮助(h) 岸include &l
17、t;stdio.h>tinclude <sys/types.h>include <dirent.h>main(int argc, char *argv)dir dirp;struct dirent * p;if(argc=l)dirp=opendir("."); elsedirp=opendir(argv(ll);編譯源程序并運(yùn)行:hiyen«»(£) l«(k) t21(£) «r«u)q|p«popropo:«/shiyanxn(dt«(y)
18、flw (s> kwdntijftje-,l.c0d.otxtiecl4 timl fuel<0w<fimlfixleimlmkmimilljm1 .hcllo.ciss.cproce»».c»«clrtki<imim leq-progrsscproqrq.cowyan jcuelmet-closedir(dirp);fijshiyan v門(mén)用冊(cè)&ipepocpropo shiy«n|$ cc bs.cj*po$propo shiyanjl ./a.out "iy”丄 list.tr»hlya
19、n 3.c shiyaa 33.c progril.c progrs$2,c .out proceit.c l.c shekel.c copy.c l««.c hello.cp<po«>ropo shiyan)$ 口鼠標(biāo)對(duì)應(yīng)的設(shè)備文件是/dev/input/micep1回pepopropo:_ x文件(e)編輯(日 查看也)捜索(s)終端任)幫助(旦)pepopropo $ pepo(apropo j$ pepopropo $ pepo(apropo j$ pepopropo $ pepo(apropo j$ pepopropo $ pepo(apro
20、po j$ pepopropo $ pepo(apropo pepopropo pepo(apropo pepo(apropo pepo(apropo pepo(apropo pepo(apropo pepo(apropo pepoqpropo pepopropo pepo(apropo pepo(apropo pepo(apropo 5863 crv/-r- pepo(apropo -$ |在實(shí)現(xiàn)is命令中使用man手冊(cè)查找需要的dir等目錄流信m, man是個(gè)強(qiáng)大的命令,在編程 的過(guò)程中由于疏忽一開(kāi)始并未假如判斷條件,有些突發(fā)情況會(huì)難以處理,最后通過(guò)課件修過(guò) 過(guò)來(lái)。三、設(shè)備文件操作t$t$
21、t$t$t$t$t$t$t$t$t$ is /dev/input/mice 1 root root 13, 63 1 月 13 21:41 仏口必li皿沛e實(shí)驗(yàn)三進(jìn)程間通信(一)進(jìn)程的創(chuàng)建(必做題)編寫(xiě)一段程序,使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個(gè)子進(jìn)程,在系統(tǒng)中有一個(gè)父進(jìn)程和兩個(gè) 子進(jìn)程活動(dòng)。讓每個(gè)進(jìn)程在屏幕上顯示一個(gè)字符;父進(jìn)程顯示字符“a”,子進(jìn)程分別顯示 字符“b”和“c”。試觀察記錄屏幕上的顯示結(jié)果,并分析原因。pepopropo:*/shiyan文件(日 編輯(e) m(v)援秦(s)終端任)# include<stdio.h>main() int plf p2; whil
22、e(pl=fork() )«-l); if (pl=0) |jutchar( 'b*); else whi e(p2=fork()=-l); if (p2=6) putchar('c');else putchar( *a');-fork.c- dos 14lr 292c6,ie全祁1)pepopropo:*/shiyan文ft(f) 詼(e)亙看(y)揆希(s)終鐸任)pepopropo shiyan$ cc fork.c pepopropo shiyanjs ./a.out ab|pepo(3propo shiyac./a.out abcpepopr
23、opo shiyanjs ./a.out abpepopropo shiyan$ t./a.out abcpepopropo shiyan$ ./a.out bacpepopropo shiyanjs ./a.out abpepopropo shiyan|$ c./a.out bapepopropo shiyanjs t./a.out abcpepopropo shiyan$ ./a.out bacpepopropo shiyanjs ./a.out acbpepopropo shiyan$ ./a.out bacpepopropo shiyanjs ./a.out abc(pepopropo
24、 shiyanjs ./a.out acpepopropo shiyan$ b./a.out abcpepopropo shiyanjs ./a.out abcpepopropo bacpepopropo abcpepopropo abcpepopropo bacpepopropo abcpepopropo abcpepopropo ._abpepo卽opo shiyanjs c|shiyan$ ./a.out shiyanjs ./a.out shiyan/a.out shiyanjs /a.out $hiyan$ /a.out shiyanjs ./a.out shiyanjs ./a.o
25、ut創(chuàng)建一個(gè)新的子進(jìn)程。其子進(jìn)程會(huì)復(fù)制父進(jìn)程的數(shù)據(jù)與堆棧空間。fork成功則在父進(jìn) 程會(huì)返回新建立的子進(jìn)程pid,而在新建立的子進(jìn)程中則返回0。如果fork失敗則直接返回 -lo所以在循環(huán)條件上出現(xiàn)上述情況。修改已編寫(xiě)的程序,將每個(gè)進(jìn)程的輸出由單個(gè)字符改為一句話,再觀察程序執(zhí)行時(shí)屏 幕上岀現(xiàn)的現(xiàn)彖,并分析其原因。(必做題)pepopropo:*/shiyan- o x文14(e) 雄(£)亙看(y)橫矣(s)終氓任)幫助(h)£(子進(jìn)程創(chuàng)建成功,到下一個(gè)while,第二個(gè)子進(jìn)程成功到最后循環(huán),輸入parents 1-500,隨后返回繼續(xù)上面子進(jìn)程的循壞輸出0parents4
26、92 parents493 parents494 parents495 parents496 parents497 parents498 parents499 pepopropo shiyan$ sono sonl son2 son3 son4 sons son6 son7 son8 son9 sonlo sonll sonl2 sonl3 sonl4 sonl5【思考題】1. 系統(tǒng)是怎樣創(chuàng)建進(jìn)程的?答:在unix系統(tǒng)中,只有0進(jìn)程是在系統(tǒng)引導(dǎo)時(shí)被創(chuàng)建的, 在系統(tǒng)初啟時(shí)rtio進(jìn)程創(chuàng)建1進(jìn)程,以后o進(jìn)程變成對(duì)換進(jìn)程,1進(jìn)程成為系統(tǒng)中的始祖進(jìn) 程。unix利用fork()為每個(gè)終端創(chuàng)建一個(gè)子進(jìn)程
27、為用戶服務(wù),每個(gè)終端進(jìn)程又可利用forko 來(lái)創(chuàng)建其子進(jìn)程,從而形成一棵進(jìn)程樹(shù)。2. 當(dāng)前運(yùn)行的程序(主進(jìn)程)的父進(jìn)程是什么?建立如下的c文件來(lái)獲取pidpepopropo:-/shiyan文件(e)編輯(日 査看(y)搜索(s)終端任)幫助(旦)son491son492 son493 son494 son495 son496 son497 son498 son499 vi forkpepo(apropo shiyanjs cc forkc pepo(apropo shiya./a.out daughter 5019parents5018 son5020pepo(3propo shiyanjs
28、 vi forkc pepo(3propo shiyanjs cc forkc pepo(apropo shiyanj$ vi fork.c pepo(apropo shiyan$ cc forkc pepopropo shiya./a.out daughter 5183parents5182pepo(3propo shiyan$ son5184得到這三個(gè)進(jìn)程pid,可見(jiàn)父進(jìn)程的pid是5182o(二) 信號(hào)量機(jī)制實(shí)驗(yàn)【實(shí)驗(yàn)內(nèi)容】1. 編寫(xiě)一段程序,使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個(gè)子進(jìn)程,再用系統(tǒng)調(diào)用signal ()讓父進(jìn) 程捕捉鍵盤(pán)上來(lái)的中斷信號(hào)(即按ctrl+c鍵),當(dāng)捕捉到中斷信號(hào)后,
29、父進(jìn)程用系統(tǒng)調(diào)用 kill()向兩個(gè)子進(jìn)程發(fā)出信號(hào),子進(jìn)程捕捉到父進(jìn)程發(fā)來(lái)的信號(hào)后,分別輸出下列信息后 終止:child process 1 is killed by parent!child process 2 is killed by parent!父進(jìn)程等待兩個(gè)子進(jìn)程終止后,輸出以下信息后終止:parent process is killed!實(shí)驗(yàn)要求:運(yùn)行程序并分析結(jié)果。如果把signal (sigint, stop)放在號(hào)和號(hào)位置,結(jié)果會(huì)怎樣并分析原因。 該程序段前面部分用了兩個(gè)wait(o),為什么? 該程序段中每個(gè)進(jìn)程退出時(shí)都用了語(yǔ)句exit(o),為什么?程序代碼:# incl
30、ude<stdio.h>#include<stdlib.h># includevsignalh># include<unistd.h>#include<sys/types.h># include<sys/wait.h>int wait_mark;void waiting(),stop();void main() int pl,p2;signal(sigint,stop);while(p 1 =fork()=-1);if(pl>0)/while(p2=fork()= =-l);if(p2>0)/wait_mark=l;
31、waiting(o);kill(pljo);kill(p2,12);waitingo;waitingo;printf(nparent process is killed!n j; exit(o);1elsewait_mark=l;signal(12,stop);waiting();lockf(l,l,0);printf(nchild process 2 is killed by parent!nu);lockf( 1,0,0);exit(o);1elsewait_mark=l;signal(lo.stop);waitingo;lockf( 1,1,0);printf(mchild proces
32、s 1 is killed by parent!nh);lockf( 1,0,0);exit(o);void waiting()while(wait_mark!=o);void stop()wait_mark=o;pepopropo:*/shiyan- x文何(日 編5fi(e) «<(v) g (s)終端任)幫助也) pepcxapropo *$ cd shiyanpepojapropo shiyan$ vi processc pepopropo shiyan)$ cc process.c process.c:左函數(shù)'main'中: process.c:22:
33、: 15供綸函數(shù)'wait'的實(shí)歩太少process.c:23: ft謀:提供綸£s數(shù)wait'的實(shí)多太少 pepopropo shiyan$ vi process.c pepopropo shiyanj$ cc processc process.c:左ss數(shù)'main'中: process.c:22:錯(cuò)涙:琨供綸函數(shù),wait,的實(shí)參太少 process.c:23:錯(cuò)誤:提供給函數(shù)'wait'的實(shí)參太少 pepopropo shiyan$ vi processc pepopropo shiyanj$ cc processcpe
34、p(x5propo shiyanjs ./a.outad"da(dcparent process is killed! child process 1 is killed by parent! child process 2 is killed by parent! pepopropo shiyan$ |(1)當(dāng)按下ctrl+c中斷進(jìn)程時(shí),程序?qū)?zhí)行,父進(jìn)程打印消息,父進(jìn)程mil 子進(jìn)程,子進(jìn)程1收到消息上鎖,打印消息,然后解鎖關(guān)閉進(jìn)程,隨后子進(jìn)程2 同樣操作,在kill子進(jìn)程后父進(jìn)程打印消息,中斷自身進(jìn)程。6pepapropo:-/shiyan x文件(e)編輯(e)x«
35、(v)揆索(s 終鐫任)釉助(旦)wait mark=l;(2)signal(10,stop);waitingj);lockf(l,l,0); printf("child process 1 is killed by parent!n"); lockf(l,0r0);exit(0);waitingo voidwhile(wait mark!=0); void stop()wait mark=0;pepo(apropo shiyanjs cc process.cpepo(apropo shiyanjs ./a.outacparent process is killed!chi
36、ld process 1 is killed by parent! child process 2 is killed by parent! pepo(apropo shiyanjs |運(yùn)行后表面并沒(méi)有任何改變,在兩處加入代碼之后,偶爾會(huì)出現(xiàn)需要在中斷第一 次進(jìn)程后需要進(jìn)行第二次中斷。在添加兩個(gè)中段接受指令后,會(huì)先執(zhí)行關(guān)于子進(jìn) 程的代碼片段。(3) 答:父進(jìn)程為子進(jìn)程收尸,防止僵尸程序出現(xiàn)。(4) 答:在調(diào)用處強(qiáng)行退出程序,運(yùn)行一次程序就結(jié)束。(三) 進(jìn)程的管道通信實(shí)驗(yàn)【實(shí)驗(yàn)內(nèi)容】1. 編制-段程序,實(shí)現(xiàn)進(jìn)程的管道通信。使用pipeo建立一條管道線。兩個(gè)子進(jìn)程p1和 p2分別向管道各寫(xiě)一句話:
37、child 1 is sending message!child 2 is sending message!而父進(jìn)程則從管道中讀出來(lái)自于兩個(gè)子進(jìn)程的信息,顯示在屏幕上。實(shí)驗(yàn)要求:運(yùn)行程序并分析結(jié)果。pepo(3propo:*/shiyan文件(上)»tt(e)童看也)核(s)終華(!)秸助(旦)ghne(pid2>fork()«-l);if(pid2=0)lockf(fdl,l.e);sprintf(outpipe,"child 2 process is sending message!");write(fdl)9outpipe,50);sleep
38、 ; lockf(fd(lhe>e);exit(o);elseiwait(e);read(fd09inpipe,56);printf("%sn* rinpipe);wait(g);kread(fd0,inpipet5e);*printf("%sn",inpipe);exit(g);43rl底鑼3文伴(日編撬(曰 ie(v)獲索(s)終端 m(h)pepopropo shiyan$pepopropo shiyan$pepopropo shiyan$pepopropo shiyanjspepopropo shiyan$pepopropo shiyan$pepop
39、ropo shiyan$pepopropo shiyan$pepopropo shiyan$pepo(apropo shiyan$pepopropo shiyan$kpepopropo shiyan$pepopropo shiyan$pepopropo shiyan$pepopropo shiyan$ vi pidecpepopropo shiyanjs cc pidecpide.c:在函數(shù)'main'中:pide.c:18:誓吉:隱式蘆明與內(nèi)建西數(shù)- exit*不兼容pide.c:30:害告:隱式聲明與內(nèi)建函數(shù)4exitf不兼容pide.c:40:害告:隱式聲明與內(nèi)建西數(shù)
40、39;exit/不兼容pepopropo shiyan$ ./a.outchild 1 process is sending message!=child 2 process is sending message!pepopropo shiyan$ pepopropo:-/shiyan x2. 在父進(jìn)程中用pipeo建立一條管道線,往管道里寫(xiě)一句話,兩個(gè)子進(jìn)程接收這句話。定義緩沖區(qū),創(chuàng)建管道,隨后創(chuàng)建進(jìn)程,將父進(jìn)程的消息寫(xiě)進(jìn)緩沖去寫(xiě)進(jìn)管道再傳給寫(xiě)進(jìn)子 進(jìn)程,子進(jìn)程接受。pepopropo:/shiyan文件(日 編輯(巳 iw(v)搜索(s)終端任)幫助但)0nt pidl,pid2;main
41、()int fd2;char outpipe100rinpipe100;pipe(fd);lockf(fdl,1,0);printffparents is sending message!nm); sprintf(outpipefhthis is pepo parents1msg!rt); write(fdlroutpiper50);lockf(fdlfof0);v/hile (pidl=fork() )=-l| | (pid2=fork() )=-l);if (pidl=0&&pid2=0)iockf(fd0flf0);read(fd0finpipef50);printf (
42、''child 1 process is resevice message!nh); printf("child 2 process is resevice message!'"'); printf(hthe message is %snmrinpipe); sleep(3);read(fd0finpipe,50);printf(mthe message is %snhfinpipe);lockf(fd0,e,e);5rl30%exit(0);插入rpepopropo shiyan$ vi pide2cpepopropo shiyan$ vi
43、 pide2.c|文件(e)編宦(e)查看也)搜素(s)終謂 祜助(旦) pide2.c:在函數(shù)'main'中:pide2.c:17:錯(cuò)謠:4pidf未聲明(在此函數(shù)內(nèi)第一衣便用)pide2.c:17:錯(cuò)淚:(即使在一個(gè)函數(shù)內(nèi)務(wù)衣出現(xiàn),每個(gè)未聲明的標(biāo)識(shí)特在其pide2.c:17:錯(cuò)誤:所在的西數(shù)內(nèi)也只損吿一汝。)pepopropo shiyans vi pide2cpepopropo shiyan$ vi pide2.cpepopropo shiyan$ cc pide2cpepopropo shiyan$ cc pide2cpepopropo shiyan$ ./a.outp
44、arents is sending message!pepopropo shiyan5 child 1 process is resevice message! child 2 process is resevice message!the message is this is pepo parents'msg!sddddddddaasdasdadbash: sddddddddaasdasdad: command not found pepopropo shiyans /a.out parents is sending message!child 1 process is resevi
45、ce message! child 2 process is resevice message!the message is this is pepo parents5sg!定義一個(gè)管道,父進(jìn)程傳遞消息到管道,隨后創(chuàng)建兩個(gè)子進(jìn)程接收這個(gè)消息,然后結(jié)束進(jìn)程。實(shí)驗(yàn)小結(jié):再這個(gè)實(shí)驗(yàn)中一開(kāi)始打算將兩個(gè)子進(jìn)程分開(kāi)判斷,但是常常最后出現(xiàn)結(jié)果不是出 現(xiàn)僵尸進(jìn)程就是跳過(guò)其屮一個(gè)子進(jìn)程結(jié)朿,最后我覺(jué)得既然兩個(gè)進(jìn)程同時(shí)創(chuàng)建,不如直接將 他們一起進(jìn)行判斷。(四) 消息的發(fā)送與接收實(shí)驗(yàn)【實(shí)驗(yàn)內(nèi)容】1.消息的創(chuàng)建、發(fā)送和接收。使用系統(tǒng)調(diào)用msgget ( ), msgsnd (), msgrev (),及msgctl(
46、) 編制一長(zhǎng)度為1 k的消息發(fā)送和接收的程序。參考程序©client, c#include <sys/types. h>#include <sys/msg. h>#inelude <sys/ipc.h>#define msgkey 75struct msgform long mtype;char mtext1000;msg;int msgqid;void cl icnt ()int i;msgqid=msgget(msgkey, 0777);for(i=10;i>=l;i)msg. intype=i;printf( "(client
47、)sentn” ); msgsnd(msgqid, &msg, 1024, 0);exit (0);main()client();server, c#include <sys/types. h>#include <sys/msgh>#inelude <sys/ipch>#define msgkey 75struct msgform long mtype;char mtext1000;msg;int msgqid;void server()msgqid-msgget(msgkey, 07771ipc_creat); do(msgrev (msgqid, &msg, 1030, 0, 0);printf( “ (server)receivedn”);while (msg. mtype! = l);msgctl (msgqid, 1pc rm id, 0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CNFIA 158-2022食品物流標(biāo)準(zhǔn)體系構(gòu)建指南
- T/CMMA 7-2019氯氧鎂膠凝材料改性劑
- T/CIQA 72-2023通道式紫外線消毒設(shè)備
- T/CIQA 6-2020生態(tài)原產(chǎn)地產(chǎn)品保護(hù)示范區(qū)建設(shè)及評(píng)審技術(shù)規(guī)范
- T/CIE 166-2023企業(yè)級(jí)固態(tài)硬盤(pán)測(cè)試規(guī)范第2部分:性能測(cè)試
- T/CHES 90-2023水稻水足跡核算與評(píng)價(jià)技術(shù)規(guī)范
- T/CHES 53-2021水質(zhì)監(jiān)測(cè)分析方法標(biāo)準(zhǔn)編制技術(shù)導(dǎo)則
- T/CHC 2-2021抗病毒功能紡織品
- T/CFPA 031-2023步履式救援機(jī)器人第2部分:試驗(yàn)方法
- T/CECS 10367-2024薄型單涂水性無(wú)機(jī)富鋅防腐涂料
- 導(dǎo)截流驗(yàn)收?qǐng)?bào)告匯編
- 大班科學(xué)《神奇的中草藥》課件
- 信用修復(fù)申請(qǐng)書(shū)
- 全過(guò)程造價(jià)控制流程全圖
- 溫州7.23動(dòng)車事故調(diào)查報(bào)告介紹課件
- RAL 勞爾色卡電子版
- 造價(jià)咨詢質(zhì)量控制保證措施及服務(wù)質(zhì)量
- 跳棋教學(xué)(課堂PPT)
- 火車過(guò)橋問(wèn)題四年級(jí)(課堂PPT)
- MSA偏倚分析報(bào)告樣本
- 中國(guó)顱腦創(chuàng)傷顱內(nèi)壓監(jiān)測(cè)專家共識(shí)
評(píng)論
0/150
提交評(píng)論