




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、進(jìn)程間通信(1)調(diào)試以下程序給出運(yùn)行結(jié)果并分析其程序原理:#include <stdio.h>#include <unistd.h>#include <wait.h>#include <signal.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>(1)編寫(xiě)兩個(gè)程實(shí)現(xiàn)進(jìn)程的無(wú)名管道和有名管道通信。要求分別調(diào)用pipe()、close()、write()、read()、popen()、p
2、close()、mknod()、mkfifo()、open()實(shí)現(xiàn)多個(gè)進(jìn)程間的通信。1.使用無(wú)名管道pipe(),進(jìn)行父子進(jìn)程之間的通信。編寫(xiě)的程序如下:運(yùn)行結(jié)果:2.以命名行為參數(shù)的管道文件的示例。(假設(shè)有一個(gè)可執(zhí)行程序chcase,從標(biāo)準(zhǔn)輸入設(shè)備讀字符,將小寫(xiě)字母轉(zhuǎn)化成大寫(xiě)字母并輸出。主程序使用popen創(chuàng)建管道,實(shí)現(xiàn)蔣某文本文件中的字幕轉(zhuǎn)化成大寫(xiě)字母,其中的文本文件名作為參數(shù)傳進(jìn)來(lái)。)Text.c文件 運(yùn)行結(jié)果:3.創(chuàng)建有名管道。運(yùn)行結(jié)果4.軟中斷機(jī)制#include<stdio.h>#include<signal.h>#include<unistd.h&g
3、t; void waiting(),stop(),alarming();int wait_mark;main()int p1,p2;if(p1=fork() /*創(chuàng)建子進(jìn)程p1*/if(p2=fork() /*創(chuàng)建子進(jìn)程p2*/wait_mark=1;signal(SIGINT,stop); /*接收到c信號(hào),轉(zhuǎn)stop*/signal(SIGALRM,alarming);/*接受SIGALRMwaiting();kill(p1,16); /*向p1發(fā)軟中斷信號(hào)16*/ kill(p2,17); /*向p2發(fā)軟中斷信號(hào)17*/ wait(0); /*同步*/wait(0);printf(&qu
4、ot;parent process is killed!n");exit(0); else wait_mark=1;signal(17,stop);signal(SIGINT,SIG_IGN); /*忽略 c信號(hào)*/while (wait_mark!=0);lockf(1,1,0);printf("child process2 is killed by parent!n");lockf(1,0,0);exit(0);elsewait_mark=1;signal(16,stop);signal(SIGINT,SIG_IGN); /*忽略c信號(hào)*/while (wai
5、t_mark!=0)lockf(1,1,0);printf("child process1 is killed by parent!n");lockf(1,0,0);exit(0);void waiting()sleep(5);if (wait_mark!=0) kill(getpid(),SIGALRM);void alarming()wait_mark=0;void stop()wait_mark=0;運(yùn)行結(jié)果:5.信號(hào)程序?qū)嵗c修正#include <stdio.h>#include <signal.h>#include <unistd.
6、h>void waiting( ),stop( );int wait_mark;main( )int p1,p2,stdout;while(p1=fork( )= =-1); /*創(chuàng)建子進(jìn)程p1*/if (p1>0) while(p2=fork( )= =-1); /*創(chuàng)建子進(jìn)程p2*/if(p2>0) wait_mark=1;signal(SIGINT,stop); /*接收到c信號(hào),轉(zhuǎn)stop*/waiting( );kill(p1,16); /*向p1發(fā)軟中斷信號(hào)16*/kill(p2,17); /*向p2發(fā)軟中斷信號(hào)17*/wait(0); /*同步*/wait(0)
7、;printf("Parent process is killed!n");exit(0); else wait_mark=1;signal(17,stop); /*接收到軟中斷信號(hào)17,轉(zhuǎn)stop*/waiting( );lockf(stdout,1,0);printf("Child process 2 is killed by parent!n");lockf(stdout,0,0);exit(0);elsewait_mark=1;signal(16,stop); /*接收到軟中斷信號(hào)16,轉(zhuǎn)stop*/waiting( );lockf(stdout
8、,1,0);printf("Child process 1 is killed by parent!n");lockf(stdout,0,0);exit(0); void waiting( ) while(wait_mark!=0);void stop( )wait_mark=0;運(yùn)行結(jié)果屏幕上無(wú)反應(yīng),按下C后,顯示 Parent process is killed!分析原因 思考1、 該程序段前面部分用了兩個(gè)wait(0),它們起什么作用? 用了兩個(gè)wait(0)的作用是父進(jìn)程等待兩個(gè)子進(jìn)程終止2、 該程序段中每個(gè)進(jìn)程退出時(shí)都用了語(yǔ)句exit(0),為什么? 用exit(
9、0)的作用是使子進(jìn)程實(shí)現(xiàn)正常終止,正常退出此次操作,返回。 3、 為何預(yù)期的結(jié)果并未顯示出? 因?yàn)橹粓?zhí)行成功兩個(gè)子進(jìn)程,但是并沒(méi)有調(diào)用兩個(gè)子進(jìn)程P1,P2。當(dāng)signal()讓父進(jìn)程捕捉從鍵盤(pán)上來(lái)的信號(hào)(按下C或者break鍵時(shí)),只有捕捉到信號(hào)后,父進(jìn)程用系統(tǒng)調(diào)用kill()向兩個(gè)子進(jìn)程發(fā)出信號(hào)。當(dāng)子進(jìn)程捕捉到信號(hào)后才能輸出信息,之后父進(jìn)程輸出信息。 4、(重點(diǎn))程序該如何修改才能得到正確結(jié)果?(實(shí)驗(yàn)報(bào)告中寫(xiě)出完整程序)#include <stdio.h>#include <unistd.h>#include <wait.h>#include <si
10、gnal.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>void waiting( ),stop( );int wait_mark;int main( )int p1,p2,stdout;while(p1=fork()=-1); /*創(chuàng)建子進(jìn)程p1*/if (p1>0) while(p2=fork()=-1); /*創(chuàng)建子進(jìn)程p2*/if(p2>0) wait_mark=1;signal(SIGINT,stop)
11、; /*接收到c信號(hào),轉(zhuǎn)stop*/waiting();kill(p1,16); /*向p1發(fā)軟中斷信號(hào)16*/kill(p2,17); /*向p2發(fā)軟中斷信號(hào)17*/wait(0); /*同步*/wait(0);printf("Parent process is killed!n");exit(0); else wait_mark=1;signal(17,stop); /*接收到軟中斷信號(hào)17,轉(zhuǎn)stop*/signal(SIGINT,SIG_IGN);/修改處waiting( );lockf(stdout,1,0);printf("Child process 2 is killed by parent!n");lockf(stdout,0,0);exit(0);elsewait_mark=1;signal(16,stop); /*接收到軟中斷信號(hào)16,轉(zhuǎn)stop*/signal(SIGINT,SIG_IGN);/修改處waiting();lockf(stdout,1,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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025福建省建筑安全員C證考試題庫(kù)
- 南京師范大學(xué)《統(tǒng)計(jì)學(xué)專業(yè)前沿》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川農(nóng)業(yè)大學(xué)《醫(yī)學(xué)論文寫(xiě)作與學(xué)術(shù)誠(chéng)信》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西體育高等??茖W(xué)?!兜厍蛭锢韺W(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 甘肅畜牧工程職業(yè)技術(shù)學(xué)院《研究型綜合》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱工程大學(xué)《學(xué)前教育專業(yè)英語(yǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年山東省百師聯(lián)考高三上學(xué)期11月考試歷史試卷
- 上海民遠(yuǎn)職業(yè)技術(shù)學(xué)院《服裝市場(chǎng)調(diào)研》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西信息職業(yè)技術(shù)學(xué)院《秘書(shū)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 貴州農(nóng)業(yè)職業(yè)學(xué)院《口腔探究性學(xué)習(xí)(1)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海市建設(shè)工程施工圖設(shè)計(jì)文件勘察設(shè)計(jì)質(zhì)量疑難問(wèn)題匯編(2024 版)
- 《康復(fù)工程學(xué)》課件-第一講 康復(fù)工程概論
- 2025年度智慧醫(yī)療服務(wù)平臺(tái)建設(shè)合同范本
- 2024項(xiàng)目管理人員安全培訓(xùn)考試題(審定)
- 2025四川宜賓市高縣縣屬國(guó)企業(yè)第一次招聘3人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2024 年國(guó)家公務(wù)員考試《申論》(地市級(jí))真題及答案
- 2024年沈陽(yáng)職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 《榜樣9》觀后感心得體會(huì)一
- 2024年上海普陀區(qū)司法局招聘人民調(diào)解員考試真題
- 駕照考試題庫(kù)及答案(完整版)
- 2024年3、6、9月青少年軟件編程Python等級(jí)考試一級(jí)真題(全3套 含答案)
評(píng)論
0/150
提交評(píng)論