资源简介
当程序运行时,父进程fork出4个子进程。父进程负责产生消息(每1s产生一个消息),4个子进程负责处理消息。父子进程之间通过消息队列来传递消息。
父进程需要维护一个本地数据库(格式与共享数据库相同),当生成一个消息时,父进程要同步更新本地数据库。子进程在处理消息时,根据消息的内容来对共享数据库进行更新
代码片段和文件信息
#include “child.h“
int count=0; /*每个子进程的运算次数*/
int id;
/*终止子进程*/
void killchild(){
printf(“pid:%dcount:%d\n“getpid()count);
exit(1);
}
/*删除信号量*/
void delete_sem(){
if(semctl(id0 IPC_RMID 0)==-1){
printf(“delete sem error\n“);
}
printf(“delete sem scuueed\n“);
}
/*收到消息*/
void recieve_message(mqd_t mqdchar *addrint semid){
struct mq_attr mqattr;
mq_getattr(mqd&mqattr);
int msg[mqattr.mq_msgsize];
if((mq_receive(mqdmsgmqattr.mq_msgsizeNULL))!=-1){
P(semid); /*上锁*/
if(msg[1]==1){
addr[msg[0]]--;
}
else{
addr[msg[0]]++;
}
V(semid); /*释放锁*/
count++;
}
}
/*上锁*/
void P(int id)
{
struct sembuf sb[1]= {0-1 0};
semop(id sb 1);
}
/*释放锁*/
void V(int id)
{
struct sembuf sb[1] = {0 1 0};
semop(id sb 1);
}
/*初始化信号量*/
void init_sem(int semid){
id=semid;
semun su={1};
semctl(semid0SETVALsu);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-08-14 09:54 吴月辉_操作系统编码练习一\
目录 0 2018-08-14 09:53 吴月辉_操作系统编码练习一\test1\
文件 320 2018-08-10 14:28 吴月辉_操作系统编码练习一\test1\Makefile
文件 993 2018-08-14 09:55 吴月辉_操作系统编码练习一\test1\child.c
文件 382 2018-08-14 09:50 吴月辉_操作系统编码练习一\test1\child.h
文件 2155 2018-08-14 09:56 吴月辉_操作系统编码练习一\test1\father.c
文件 414 2018-08-14 09:51 吴月辉_操作系统编码练习一\test1\father.h
文件 1328 2018-08-14 09:57 吴月辉_操作系统编码练习一\test1\main.c
文件 14680 2018-08-14 09:51 吴月辉_操作系统编码练习一\test1\test1.exe
文件 150016 2018-08-10 18:01 吴月辉_操作系统编码练习一\运行说明及实验截图.doc
- 上一篇:PL/O语言编译器
- 下一篇:计算机软件的四种知识产权保护方式及其优缺点分析
相关资源
- 阿里 Rocketmq4.2 安装包
- rabbitmq3.7.7Linux通用安装包
- RabbitMQ CookBook
- STM32搭载RTOS实现任务+消息队列+串口通
- Spring RabbitMQ实现案例抢红包高并发
- SpringBoot整合ActiveMQ消息队列和双向队
- RabbitMQ实战pdf高清
- Kafka核心设计与实践原理.zip
- RabbitMQ实战+高效部署分布式消息队列
- 消息队列安装需要文件
- STM32上实现12864液晶二维码的显示,
- RocketMQ实战与原理解析.pdf
- 从 0 开始带你成为消息中间件实战高
- RabbitMQ实战视频.zip
- zeromq的request-reply问答模式的jave实现
- Windows Service 通信- 消息队列
- 模拟IO,iic从机模式移植性强,串口中
- 基于Linux的消息队列及多线程编程实现
- 消息队列通信设计
- MSMQ、RabbitMQ、ActiveMQ消息队列调试工具
- ucos中的消息队列代码详解
- 使用消息队列与共享内存完成一个简
- 编写自定义的消息队列
- 使用org.eclipse.paho.client.mqttv3实现mqtt
- Redis 用于消息队列的存储
- linux使用消息队列实现进程间双向通信
- 操作系统进程间基于消息队列的通信
- 项目-银行账户管理系统linux C编程和
评论
共有 条评论