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

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

现贴代码:

软中断:

#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. cf方框透视易语言代码怎么写_易语言真的那么不入流吗?

    很多人鄙视易语言,为什么那么多人一提易语言,除了骂,还是骂,易语言很大错误吗? 知乎上的大神们是这么说的 一个语言的"入流",和是不是英文关键字无关,而是和这种语言进入某一子行业的 ...

  2. 汇编语言、高级语言(系统语言)、脚本语言的异同

    汇编语言.高级语言(系统语言).脚本语言的异同 高级语言主要指需要编译的语言.如C/C++,Java,C#.脚本语言主要指解释型语言,编写的代码无需编译器编译,直接使用解释器放入虚拟机执行. 高级语言 ...

  3. C语言输入end时结束程序,c语言输入eof结束怎么写

    1.C语言里的EOF(结束程序)怎么用 在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file).在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件 ...

  4. 学了C语言,如何利用CURL写一个下载程序?—用nmake编译CURL并安装

    在这一系列的前一篇文章学了C语言,如何为下载狂人写一个磁盘剩余容量监控程序?中,我们为下载狂人写了一个程序来监视磁盘的剩余容量,防止下载的东西撑爆了硬盘.可是,这两天,他又抱怨他的下载程序不好用,让我 ...

  5. c语言api函数写病毒,C语言病毒代码,及写病毒简单介绍

    编制病毒的语言 最常见的编制病毒的语言有汇编语言.VB.C 语言等,我们可以来看一看一个有名的病毒论坛上认为学写病 毒要掌握的基础: 1).Win32编程,进程,线程,内存,等等. 2).32位汇编, ...

  6. 自己写编程语言-m语言

    一直对技术有很强的兴趣,终于,决定要写自己的语言(m语言).那就先从最简单的开始:解释执行器. 一套完整的语言包含的肯定不止解释执行器了,还要有编译器和IDE,也就还要有语法高亮.智能提示等,不过还没 ...

  7. c语言学生综合测评系统_c语言图书管理系统_c语言学生综合测评系统_c语言个人账本管理系统...

    c语言销售管理系统设计 c语言设计管理系统,c图书管理系统设计,学生管理系统c语言,职工管理系统c语言,c语言图书管理系统,c语言成绩管理系统,c语言管理系统,c语言银行管理系统,c语言工资管理系统, ...

  8. 系统开发c语言技术参数,1 C语言 gcc 介绍 C 语言编译 main接受参数

    1 C语言 gcc 介绍 C 语言编译 main接受参数 发布时间:2020-07-19 20:18:28 来源:51CTO 阅读:1216 作者:990487026 1第一个c语言的hello wo ...

  9. 好玩的c语言编程游戏,C语言写个贪吃蛇游戏

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C语言写个贪吃蛇游戏 贪吃蛇是个非常经典的游戏,用C语言来实现也是一个好玩的事情.这个游戏我写完后放在知乎,竟然点赞的人数超级多.我觉得大家喜欢,一个方面 ...

  10. 在线进行C语言编译,在线C语言编译及考试系统.doc

    摘要: C语言是一种计算机程序设计语言.它既具有高级语言的特点,又具有汇编语言的特点.它由美国贝尔研究所的D.M.Ritchie于1972年推出.1978后,C语言已先后被移植到大.中.小及微型机上. ...

最新文章

  1. pytest实战--参数化parametrize+前置fixture
  2. 解决WIN7下组播问题
  3. 安防行业标准规范大全
  4. HardwareSoftwareTutorial
  5. Iptables防火墙配置
  6. Spring学习(22)--- AOP之Advice应用(下)
  7. xgboost相比传统gbdt有何不同?xgboost为什么快?xgboost如何支持并行?
  8. python有没有帮助_没想到,python给我的帮助竟然这么大
  9. MYSQL远程登录权限设置 ,可以让Navicat远程连接服务器的数据库
  10. [转载]PSCAD调用MATLAB/SIMULINK之接口元件设计
  11. C++程序设计(第2版)课后习题答案--第11章
  12. C# 使用Conditional特性而不是#if条件编译
  13. ios沙盒查找图片展示
  14. 微信小程序码的生成(java)
  15. Dev ChartControl 显示设置百分比
  16. 操盘机器人新增板块资金流向分析模型,可自定义板块、分析周期以及系统自动学习功能
  17. python爬虫贴吧_Python爬虫——抓取贴吧帖子
  18. win10 红警启动必要文件
  19. mac怎么修改hosts文件
  20. Python提取信息测试

热门文章

  1. 计算机的配置以及简单的操作
  2. [原]正则表达式模式匹配入门
  3. [hackerrank]Closest Number
  4. 百练 2972 确定进制 解题报告
  5. mysql collate
  6. java maven strom 启动异常
  7. 问题:使用pandas中的DataFrame写入csv文件多出一行unnamed,如何解决呢??
  8. Qt5 提示:无法启动此程序,计算机丢失Qt5Widgetsd.dll的解决方法
  9. Eclipse build Android时不生成apk问题解决方法
  10. 1024,节日快乐!