下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、进程间互斥与同步实验内容:编写算法,实现进程间对临界资源的互斥访问以及进程间的同步关系。实验要求:1、要求进程互斥使用文本文件;2、假定文本文件txtl最大可写入30个字符;3、写满后复制进程将文本文件的内容复制到另一个文 本文件txt2中(无长度限制)。4、复制进程复制完毕写入进程可再重新写入,重复执行3, 4,直到给由停止命令。5、实现进程间的同步和互斥。代码:#include#include/stdio.h#include/函数库#include/linux/unix 的系统调用#include/信号量#includeusing namespace std ;typedef union
2、_semnuint val;structsemid_ds *buf;ushort * array ;semun;/v操作void v( int &sem_id)structsembuf sem_b;sem_b.sem_num= 0;sem_b.sem_op= 1;sem_b.sem_flg=SEM_UNDO;if (semop(sem_id,&sem_b, 1 )=- 1) cout error endl;exit (0);/p操作void p( int &sem_id)struct sembuf sem_b;sem_b.sem_num=0;sem_b.sem_op=-1;sem_b.sem_
3、flg=SEM_UNDO;if (semop(sem_id,&sem_b, 1 )=- 1) cout error endl;exit (0);/设置信号量初值void set ( int sem_id, int val= 1)semun sem_un;sem_un.val=val;if (semctl(sem_id, 0,SETVAL,sem_un)=- 1) if (errno=EEXIST)cout exist endl;cout set val error endl;exit ( 0 );void del( int sem_id)semun sem_un;if (semctl(sem_
4、id, 0,IPC_RMID,sem_un)=- 1) cout error endl;int main()/互斥量int sem_mutex=semget(key_t) set (sem_mutexk, 1);8888 , 1 ,IPC_CREAT);int sem_full=semget(key_t)1234 , 1,IPC_CREAT);cout sem_fullendl;/set semaphore fullset (sem_full, 0);int sem_empty=semget(key_t)1235 , 1 ,IPC_CREAT);cout sem_empty 0) /paren
5、t/produce/p(empty)/v(full)for ( int i= 0;i 5;i+)p(sem_empty);p(sem_mutex);/锁定临界区cout writing.iendl;fseek(fp1,0,SEEK_SET);,fp1);fputs ( QWERTYUIOPASDFGHJKLZXCVBNM1234” fflush(fp1);sleep(1 );cout write done endl;v(sem_mutex);v(sem_full);fclose(fp1);cout txt2: endl;system( cat txt2 n); else if (id= 0)/
6、consume/p(full)/v(empty)char buf 32 ;buf 31 = 0;fill(buf,buf+20, 0);for ( int i= 0;i 5;i+) ( p(sem_full);p(sem_mutex);/锁定临界区cout reading. iendl;fseek(fp2,0,SEEK_SET);fgets(buf,30 ,fp2);fputs (buf,fp3);fflush(fp3);/由于缓冲方式的影响,30个字符不会立刻读取到buf中,需要fflush cout bufendl; cout read done endl; cout endl;sleep
7、(1);v(sem_mutex);v(sem_empty);fclose(fp2);fclose(fp3); exit (0); else /error (cout 创建子进程失败! endl; exit (0);/ del(sem_full);/ del(sem_empty);return 0;输生结果:/注意要以root用户运行程序196608229377writing.0write donereading.0QWERTYUIOPASDFGHJKLZXCVBNM123read done TOC o 1-5 h z writing.1write done reading.1QWERTYUIOPASDFGHJKLZXCVBNM123 read donewriting.2write donereading.2QWERTYUIOPASDFGHJKLZXCVBNM123 read donewriting.3write donerea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年版建筑工程劳务分包合同
- 地质勘查项目进度滞后要执行调度推进整改措施
- 2026学年山东省济南市四年级语文期末自测重点试卷(详细参考解析)详细答案和解析
- 丁苯橡胶装置操作工岗前环保竞赛考核试卷含答案
- 2026年全国注册环保工程师之注册环保工程师公共基础考试重点试题附答案
- 遗体火化师安全生产意识模拟考核试卷含答案
- 2026年电子商务平台营销策略报告及未来行业创新报告
- 拖拉机柴油发动机装试工安全综合模拟考核试卷含答案
- 炼焦工岗前技能实操考核试卷含答案
- 中药酒(酊)剂工岗前操作安全考核试卷含答案
- (高清版)DG∕TJ 08-15-2020 绿地设计标准 附条文说明
- 眼部颞浅注射操作讲解
- 2025年人教部编版语文二年级下册期末复习计划
- 雪糕采购合同范本
- 6月26国际禁毒日防范青少年药物滥用禁毒宣传课件
- 【MOOC】国际商务-暨南大学 中国大学慕课MOOC答案
- 【MOOC】大学物理-力学、电磁学-重庆大学 中国大学慕课MOOC答案
- 【MOOC】3D工程图学-华中科技大学 中国大学慕课MOOC答案
- 公司工程项目质量管理手册
- 松树的风格课件
- 工程管理奖罚细则
评论
0/150
提交评论