欢迎来到天天文库
浏览记录
ID:24170625
大小:125.25 KB
页数:4页
时间:2018-11-13
《实验3进程同步与通信实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验3进程同步与通信实验一、实验目的1.加深对进程概念的理解,明确进程和程序的区別2.进一步认识并发执行的实质3.分析进程争川资源的现象,学习解决进程互斥的方法4.了解Linux系统中进程通信的基本原理5.掌握Linux系统软中断通信的实现方法6.学会使川Linux系统屮关于进程通信的实现方法7.掌握管道通信的使用二、实验内容1.编制实现软中断通信的程序使用系统调用forkO创建两个子进程,再用系统调用signalO让父进程捕捉定时器报警屮断信号(SIGALRM),当父进程接收到该信号后,调川kill(>l4两个子进柷发送终止信号,子进程分别输出卜列信息后
2、终止。Childprocess1iskilledbyparent!!Childprocess2iskilledbyparent!!父进程调川waitO函数等待两个子进程终止后,输出以下信息后终止。Parentprocessiskilled!!多运行几次编写的程序,简略分析出现不同结果的原因。2.编制实现进程的管道通信的程序(选作)使用系统调用pipe()建立一条管道线,两个子进程分别向管道线各写一句话。Childprocess1issendingamessage!!Childprocess2issendingamessage!!父进程从管道屮读出来自于两个
3、了进程的信息,显示屏幕上。要求:父进程先接收子进程P1发来的消息,然后再接收子进程P2发來的消总。三、实验结果1.编制实现软中断通信的程序源代码:#include#include#include#includevoidstop();intwaitFlag;intmain(){intpidlzpid2;signal(3,stop);while((pidl=fork())==-1)if(pidl>0)while((pid2=fork())==-1)if(pid2>0){waitFla
4、g=1;sleep⑴;kill(pidl,16);kill(pid2,17);wait(O);wait(O);printf("Parentprocessiskilled!!");exit(O);}else{waitFlag=1;signal(17,stop);printf("Childprocess2iskilledbyparent!!");exit(O);}}else{waitFlag=1;signal(16,stop);printf("Childprocess1iskilledbyparent!!");exit(O);}}voidstop(
5、){waitFlag=0;运行结果:FileEditViewTerminalTabsHelpWHOOHM
6、Childprocess1iskilledbyparent!!Childprocess2iskilledbyparent!!Parentprocessiskilled!![root@localhostDesktop]#./expChildprocess1iskilledbyparent!!Childprocess2iskilledbyparent!!Parentprocessiskilled!![root@localhostDesktop]#./exp
7、Childprocess1iskilledbyparent!!Childprocess2iskilledbyparent!!Parentprocessiskilled!![root@localhostDesktop]#./expChildprocess1iskilledbyparent!!Childprocess2iskilledbyparent!!Parentprocessiskilled!![root@localhostDesktop]#./expChildprocess2iskilledbyparent!!Childprocess1iskilledb
8、yparent!!Parentprocessiskilled!![root@localhostDesktop]#./expChildprocess1iskilledbyparent!!Childprocess2iskilledbyparent!!Parentprocessiskilled!![root@localhostDesktop]#
9、1.编制实现进程的管道通信的程序(选作)源代码://include//include#includeintpidl,pid2;main(){intfd[2];ch
10、arOutPipe[100],lnPipe[100];pipe(f
此文档下载收益归作者所有