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

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

现贴代码:

软中断:

#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. c语言程序设计工资纳税系统流程图,c语言程序设计,纳税工资系统.doc

    c语言程序设计,纳税工资系统c语言程序设计,纳税工资系统 第一章 课程设计目的和要求 1.1 课程设计的目的C语言一直是程序设计语言的主流之一数据类型丰富.齐全.C供了整数.实数.字符.字符串等基本数 ...

  2. c语言程序学生成绩系统论文,c语言程序设计-学生成绩管理系统论文.doc

    c语言程序设计-学生成绩管理系统论文 C语言程序设计课程设计报告 - PAGE 11 - 中南民族大学工商学院 电子信息与计算机技术系 项目名称: 学生成绩管理系统 学生姓名: 学 号: 班 级: 指 ...

  3. ubuntu下c语言编程工具,Ubuntu系统下C语言代码检查工具(Splint)

    看一下下面的代码(当然包括错误,以检验splint的功能): #include int main(int argc,char* argv[]){ int a=100; /*没有使用的变量*/ int ...

  4. c语言万年历报错系统,用c语言写万年历应该怎样写?

    小弟编写了一个,但总是报错,麻烦哪位高人指点一下,告诉我错在哪里?应该怎么改?事成之后必有重谢. 我输入年月日时,总是给出日期错误的提示. #include int isLeap() { int ye ...

  5. linux环境下c语言调用lapack,linux系统下C语言调用lapack ,blas库

    在利用C语言编程,经常调用其他的软件包,其中lapack,blas库是最常用的两个库,这里讲下在linux系统下,C语言编程如何调用这两个库: 1.首先讲下blas库的调用,这里以两个向量内积函数为例 ...

  6. c语言招生信息查询系统,《C语言程序设计》课程设计报-招生信息查询系统.docx...

    <C语言程序设计>课程设计报-招生信息查询系统 课程设计报告题目:招生信息查询系统课程名称:C语言程序设计专业班级:信息安全1302学号:姓名:指导教师:报告日期:2014年9月17日计算 ...

  7. 用C语言编程网上购物系统,基于c语言的购物系统.doc

    基于c语言的购物系统 #include #include #include #include #include /******************************************* ...

  8. c语言考试排座位系统源程序,c语言_排考场座位问题:.doc

    c语言_排考场座位问题: ④排考场座位问题:假设考场有8×8的座位,每当一个考生进入考场就为他安排座位.主界面如下:请输入选项(1-4)1?设定考场座位2?取消考场座位3?显示某座位考生信息4?查找学 ...

  9. c语言银行存取款系统编译,C语言银行存取款管理系统.docx

    5 5 C 语言 银行存取款管理系统 得分: 信电工程学院 <高级语言程序设计课程设计>报告 题目 : 银行存取款管理系统 班级: 10 电信(1) 班 学号: 20100504143 姓 ...

最新文章

  1. python就业方向选择-学完Python,你有哪些就业方向可以选?
  2. Funny:还是程序猿会玩——弹幕炸天学AI和区块链,玩起来!弹慕君,你也值得拥有!
  3. PWA - service worker - Workbox(未完)
  4. absolute元素水平居中
  5. RabbitMQ实现中AMQP与MQTT消息收发异同
  6. [HEOI2016/TJOI2016]序列
  7. 用setTimeout代替setInterval
  8. 拓端tecdat|R语言基于Keras的小数据集深度学习图像分类
  9. 用VC实现洪水***程序
  10. ios 录音后播放声音变小的解决方法
  11. 【openJDK系列3】java OOM 分析(mat工具的使用)
  12. 北京时间校准 服务器 显示器 标准,纯干货~北京时间校准显示器实用分享
  13. 【CPU设计实战】简单流水线CPU设计
  14. JS日历控件集合----附效果图、源代码【转:http://www.cnblogs.com/yank/archive/2008/08/14/1267746.html】...
  15. 【SpringBoot实现企业微信会话内容存档】linux部署
  16. simulink简介
  17. 物流行业专业词汇汇总
  18. NVIDIA Jetson TK1学习与开发(二):入门指导
  19. android 自定义相册选择,Android图片选择器,支持拍照、从相册选择、裁剪、自定义主题...
  20. 跟着团子学SAP PS:利用项目统计指标(SKF)提升项目成本核算的精准性

热门文章

  1. mysql 空字符串_NULL与MySQL空字符串的区别
  2. flutter 动画展开菜单_蒲公英 · JELLY技术周刊 Vol.34: 芜湖~ Flutter
  3. 2017.9.19 禁忌 失败总结
  4. 【英语学习】【Daily English】U02 Daily Routine L02 I go to the gym every other day
  5. 什么是条件组合覆盖_什么是综合评价?高中生报名有哪些好处?
  6. python教程输入_输入/输出
  7. 双稳态电路的两个稳定状态是什么_利用SR锁存器实现SPDT开关消抖电路
  8. qt中append函数_Qt 加载cern-root库 并调用root类
  9. Hive的伴奏_Position Music顶级背景音乐合集243CD
  10. 关于C#中虚方法重载的说明