




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1节节 进程间通信进程间通信 2021-10-182第1页/共32页2021-10-183第2页/共32页2021-10-184第3页/共32页2021-10-185第4页/共32页2021-10-186第5页/共32页2021-10-187第6页/共32页2021-10-188第7页/共32页2021-10-189第8页/共32页2021-10-1810第9页/共32页2021-10-1811第10页/共32页2021-10-1812第11页/共32页2021-10-1813第12页/共32页2021-10-1814第13页/共32页2021-10-1815第14页/共32页2021-
2、10-1816程序清单:文件名sem.c(程序中使用睡眠延时1秒来模拟进入临界区前和进入后所执行的程序。)#include#include#include#include#includeint mutexid;/定义信号量标识int main()int chld,i,j;/*定义数据结构*/struct sembuf P,V;union semun arg;/*创建只含有一个互斥信号量元素的信号量集*/mutexid=semget(IPC_PRIVATE,1,0666|IPC_CREAT);/*为信号量赋初值*/arg.val=1;if(semctl(mutexid,0,SETVAL,arg)
3、=-1)perror(semctl setval error);第15页/共32页2021-10-1817 /*定义P、V操作*/P.sem_num=0;P.sem_op=-1;P.sem_flg=SEM_UNDO;V.sem_num=0;V.sem_op=1;V.sem_flg=SEM_UNDO;while(chld=fork()=-1); /创建子进程if(chld0) /父进程返回i=1;while(i=3)/循环3次sleep(1);semop(mutexid,&P,1); /进入临界区前执行P操作printf(prnt inn);sleep(1);printf(prnt outn);
4、semop(mutexid,&V,1); /出临界区执行V操作i+;wait(0);/等待子进程终止semctl(mutexid,IPC_RMID,0);/撤消信号量exit(0);第16页/共32页2021-10-1818else/子进程返回j=1;while(j=3)/循环3次sleep(1);semop(mutexid,&P,1); /进入临界区前执行P操作printf(chld inn);sleep(1);printf(chld outn);semop(mutexid,&V,1); /出临界区执行V操作j+;exit(0);/子进程终止第17页/共32页2021-10-1819第18页
5、/共32页2021-10-1820第19页/共32页2021-10-1821父进程子进程单缓冲区图4 6 单缓冲区同步问题第20页/共32页2021-10-1822第21页/共32页2021-10-1823程序清单,文件名为sem2.c:#include#include#include#include#include#include#include/*定义信号量内部标识*/int emptyid;int fullid;main()int chld,i,j;/*定义信号量数据结构*/struct sembuf P,V;union semun arg;/*定义共享内存*/int shmid;cha
6、r *viraddr;char bufferBUFSIZ;第22页/共32页2021-10-1824 /*创建信号量并初始化*/emptyid=semget(IPC_PRIVATE,1,IPC_CREAT|0666);fullid=semget(IPC_PRIVATE,1,IPC_CREAT|0666);arg.val=1;if(semctl(emptyid,0,SETVAL,arg)=-1)perror(semctl setval error);arg.val=0;if(semctl(fullid,0,SETVAL,arg)=-1)perror(semctl setval error);/*
7、定义P、V操作*/P.sem_num=0;P.sem_op=-1;P.sem_flg=SEM_UNDO;V.sem_num=0;V.sem_op=1;V.sem_flg=SEM_UNDO;/*创建并附接共享内存*/shmid=shmget(IPC_PRIVATE,BUFSIZ,0666|IPC_CREAT);viraddr=(char*)shmat(shmid,0,0);第23页/共32页2021-10-1825while(chld=fork()=-1);/创建子进程if(chld0)/父进程返回读信息并输出 while(1) semop(fullid,&P,1);/对fullid执行P操作p
8、rintf(Your message is:n%s,viraddr);semop(emptyid,&V,1);/对emptyid执行V操作if(strncmp(viraddr,end,3)=0)break; wait(0);/等待子进程终止shmdt(viraddr);/断开附接的共享内存shmctl(shmid,IPC_RMID,0);/撤消共享内存和信号量集semctl(emptyid,IPC_RMID,0);semctl(fullid,IPC_RMID,0);printf(Parent ok!n);exit(0);第24页/共32页2021-10-1826else/子进程返回写信息到共享内存while(1)semop(emptyid,&P,1);/对emptyid执行P操作puts(Enter your text:);fgets(buffer,BUFSIZ,stdin);/键盘输入信息strcpy(viraddr,buffer); /写信息到共享内存中(覆盖方式)semop(fullid,&V,1);/对fullid执行V操作if(strncmp(viraddr,end,3)=0)sleep(1); /睡眠1秒,等待父进程将end取走break;printf(Child ok!n);exit(0);第25页/共32页2021-10-1827第26页/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 牙科门诊考试题及答案
- 2025农副产品采购销售合同
- 2025汽车买卖的合同书
- 渔业新质生产力提升方案
- 新质生产力与新产业发展
- 国家新质生产力布局
- 2025年高中电学专题题库及答案
- 2025商务合同范本设备采购协议范本
- 工业地坪涂料项目可行性研究报告
- 2025人力资源和社会保障局劳务合同范本
- 铝单板幕墙专项方案
- GB 5009.227-2023食品安全国家标准食品中过氧化值的测定
- 剑门关与三国的故事课件
- 师德师风建设问责制实施办法
- 提高留置针准确使用率完成PDCA
- 有限空间预案演练总结
- 养生之旅武穴山药
- 和政秧歌的发展历史、表演形式及音乐特点,舞蹈论文
- GB/T 42062-2022医疗器械风险管理对医疗器械的应用
- 第六节-食品新资源的开发-课件
- 复变函数-西安交大版课件
评论
0/150
提交评论