内容发布更新时间 : 2024/12/23 20:46:22星期一 下面是文章的全部内容请认真阅读。
漳 州 师 范 学 院
实 验 报 告
班 级 13网络1班 学号1308990337 姓名 成绩
同组人 实验日期 课程名称:操作系统 实验题目:进程通信管理 1. 加深理解进程并发执行的概念,认识多进程并发执行的实质; 实验目的与要求 2. 观察进程争夺资源的现象,分析其进程和原因,学习解决进程互斥的方法; 3. 了解Linux系统中多进程之间通过软中断通信以及管道通信基本原理和应用方法; PC 兼容机。Window xp 以上操作系统 实验环境的配置 第 1 页 闽 南 师 范 大 学 1.软中断通信 编制一段程序,使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按ctrl+c键),当捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止: child process 1 is killed by parent! child process 2 is killed by parent! 父进程等待两个子进程终止后,输出一下信息后终止: parent process is killed! 程序: #include #include #include void waiting(); void stop(); int wait_mark; int main() { int p1,p2; while((p1=fork())==-1); if(p1>0) //父进程产生子进程1 { while((p2=fork())==-1); if(p2>0)//父进程产生了一个子进程2 {//父进程 } else {//子进程2 printf(\wait_mark=1; signal(17,stop); waiting(); lockf(1,1,0); printf(\wait_mark=1;//将等待标志设置为1 signal(SIGINT,stop); waiting(); kill(p1,16);// kill(p2,17); wait(0); wait(0); printf(\父进程等待两个子进程终止后,输出一下信息后终止 exit(0); 实验内容与具体步骤 } } } else printf(\lockf(1,0,0); exit(0); {//子进程1 printf(\ wait_mark=1; signal(16,stop); waiting(); lockf(1,1,0); printf(\ lockf(1,0,0); exit(0); } void waiting() { } void stop() { } wait_mark=0; while(wait_mark!=0); 1. 分析结果并理解以上程序。