该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

怎么将软中断与共享内存相结合?

现贴代码:

软中断:

#include

#include

#include

#include

int wait_mark;

void waiting( ) //自定义waiting 函数与 wait(0) 作用不同,作用是是通过循环使子进程停止。

{

while(wait_mark!=0);

}

void stop( ) //调用此函数时,使wait_mark=0,结束waiting 函数中的循环,使子进程继续执行

{

wait_mark=0;

}

int main()

{

int p1,p2;

while((p1=fork( ))==-1);

if(p1>0)

{

while((p2=fork( ))==-1);

if(p2>0) //在父进程中

{

printf("parent\n");

kill(p1,16); //发送信号16

kill(p2,17); //发送信号17

wait(0); //等待 p1、p2 中的某个子进程结束

wait(0); //等待 p1、p2 中的某个子进程结束

printf("parent process id killed! \n");

exit(0);

}

else /* p2==0*/

{

printf("p2\n");

wait_mark=1;

signal(17,stop); //将信号17和函数 stop 关联起来

waiting( ); //循环,知道父进程发送信号17时,调用stop后继续执行

printf("child p2 is killed by parent! \n");

exit(0);

}

}

else/*p1==0*/

{

printf("p1\n");

wait_mark=1;

signal(16,stop);

waiting( );

printf("child p1 is killed by parent! \n");

exit(0);

}

共享内存:

#include

#include

#include

#include

#define SHMKEY 75

int shmid,i;

int *addr;

void SERVER( );

void CLIENT( );

int main()

{

while((i=fork())==-1); //创建一个子进程执行 SERVER(),即一个子进程发送消息

if(!i)SERVER( );

while((i=fork())==-1); //创建另一个子进程执行CLIENT(),即一个子进程接收消息 if(!i) CLIENT( );

wait(0); /*父进程阻塞,直到子进程结束*/

wait(0);

}

void SERVER( ) //服务器端

{

shmid=shmget(SHMKEY,1024,0777|IPC_CREAT); //创建共享区,并先取得id

addr=shmat(shmid,0,0); //通过id获得起始地址(虚地址)

do

{

*addr=-1; //取走数据

while(*addr==-1); //停止,等待客户端发送数据

printf("(server)received ," );

printf("server *addr %d\n", *addr);

}

while(*addr);

shmctl(shmid,IPC_RMID,0); //删除共享区

exit(0);

}

void CLIENT( ) //客户端

{

int i;

shmid=shmget(SHMKEY,1024,0777); //打开共享区

addr=shmat(shmid,0,0); //指向第一个单元

for(i=5; i>=0; i--)

{

while(*addr!=-1); //服务端没有取走,反复等待。

printf("(client)sent, ");

*addr=i; //实现同步

printf("client i: %d\n",i);

}

exit(0);

}

求大佬们指教!!!

怎样用c语言写一个系统,用C语言写关于操作系统的一个问题。相关推荐

  1. 基于php语言的 选课系统,基于C语言实现学生选课系统

    鉴于C语言实现的通讯录,为了巩固C语言的基础知识,试着写一个简单的学生选课系统. 思路比较简单: 1.回滚显示各种提示信息或操作信息 2.链表操作. 代码中有管理员部分功能没有实现,学生和老师的功能基 ...

  2. c语言程序设计 点菜系统,基于c语言智能点餐系统设计与实现.doc

    基于c语言智能点餐系统设计与实现 综合实践(论文) 题 目 基于C语言的智能点餐系统的设计与实现 学 院 通信与电子工程学院 专业班级 学生姓名 指导教师 成 绩 2013年 12 月 22 日 摘 ...

  3. c语言自动获取系统时间,C语言中如何获取系统时间?

    1 使用time_t time( time_t * timer ) 精确到秒 函数名: time 头文件:time.h 函数原型:time_t time(time_t * timer) 功能: 获取当 ...

  4. c语言到底写什么系统,用C语言写关于操作系统的一个问题。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 怎么将软中断与共享内存相结合? 现贴代码: 软中断: #include #include #include #include int wait_mark; ...

  5. c语言歌曲评选系统报告,C语言程序设计报告—歌曲信息管理系统精要.doc

    目 录 1 C语言程序设计目的1 2题目及需求分析1 2.1系统基本功能 2.2具体设计思想 2.3系统的总体流程图 3 .总体设计1 3.1主函数设计1 3.2各个函数的设计具体设计思想和流程图 4 ...

  6. c语言有哪些系统函数,C语言常用系统函数.doc

    C语言常用系统函数.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所得 ...

  7. 华为鸿蒙系统开发语言,华为鸿蒙系统采用什么语言进行开发的

    描述 鸿蒙系统作为华为的备用方案,首先必须要考虑的就是兼容性和开放性,这样更加自由的Linux自然就是首选,由于Linux可以运行在多种硬件平台上,所以基于此开发的鸿蒙系统可以尽可能的兼容适配更多的硬 ...

  8. c语言编写订货系统,基于C语言的仓库订货系统的仿真.doc

    基于C语言的仓库订货系统的仿真 本科毕业论文(设计.创作) 题目: 基于C语言的仓库订货系统的仿真 学生姓名: 学号: 所在系院: 信息与通信技术系 专业: 电子信息工程 入学时间: 2010 年 9 ...

  9. c语言编写订货系统,基于C语言的仓库订货系统的仿真_图文.doc

    本科毕业论文(设计.创作) 题目: 基于C语言的仓库订货系统的仿真 学生姓名: 姜明 学号: 0321002013 所在系院: 信息与通信技术系 专业: 电子信息工程 入学时间: 2010 年 9 月 ...

最新文章

  1. 在ListBox中添加ToggleButton(有IsChecked属性)
  2. dp 与px互相转换
  3. 教你玩转CSS margin(外边距)
  4. 445. 两数相加 II golang
  5. 鸟哥的linux私房菜有乌班图,折腾Ubuntu的一些summary--初装Ubuntu18和重装Ubuntu18
  6. Scope(作用域)
  7. Linux下部署LVS(DR)+keepalived+Nginx负载均衡
  8. (转载)arcgis for js - 解决加载天地图和WMTS服务,WMTS服务不显示的问题,以及wmts服务密钥。...
  9. PM_敏捷开发 Scrum vs Kanban,如何选择?
  10. linux configure使用方法
  11. 声笔码6.00版使用指南
  12. 2016最新版App Store应用审核指南完整版
  13. python移动文件到指定文件夹
  14. APISpace 银行卡三要素API 推荐
  15. Python实战:导出QQ聊天记录生成词云看看你和你的女友聊了什么
  16. 关于百度指数,你了解多少
  17. html5css重复径向渐变,CSS3怎么实现重复径向渐变效果
  18. 【机器学习】实验一 实验报告
  19. 30ea什么意思_ea阶段是什么?你未必全知道!
  20. Thinking in Java之吸血鬼数字

热门文章

  1. 5首页加载慢_5个 外贸建站谷歌SEO优化技巧
  2. 第十五届全国大学智能汽车提问回答问题 2020-8-9
  3. 信标组的磁标安装长度
  4. 关于数据库group by需要注意
  5. linux在生信的作用,【生信笔记】右键菜单打开WSL功能方法简介
  6. 计算机行业可以开安装服务费,安装服务费税率是多少
  7. 精确微妙计时minicom 源码节选
  8. linux mint 下载辅助工具,Linux Mint 18.2 下载工具AxeluGet
  9. DOM模拟京东常用快捷键
  10. 【 FPGA 】按键消抖与LED灯流动小实验