nbsp;    //SLEEP 3秒,等待消费者进程执行完毕

printf(“Poducer if over\n”);

exit(0);

}

else

{

/*  消费者A进程  */

if(fork()==0)

{

while(1)

{

if(*get==10)

break;

semop(fullid,&P,1);        //对fullid执行 P 操作

semop(mutexid,&P,1);       //对mutexid执行 P 操作

printf(“The ConsumerA get number from No.%d\n”,(*get)%MAXSHM);

(*get)++;                   //读计数加1

semop(mutexid,&V,1);        //对mutexid执行 V 操作

semop(emptyid,&V,1);        //对fullid执行 V 操作

sleep(1);

}

printf(“ConsunerA is over\n”);

exit(0);

}

else

{

/*消费者B进程  */

if(fork()==0)

{

while(1)

{

if(*get==10)

break;

semop(fullid,&P,1);       //对fullid执行 P 操作

semop(mutexid,&P,1);      //对mutexid执行 P 操作

printf(“The ConsumerA get number from No.%d\n”,(*get)%MAXSHM);

(*get)++;                 //读计数加1

semop(mutexid,&V,1);      //对mutexid执行 V 操作

semop(emptyid,&V,1);      //对emptyid执行 V 操作

sleep(1);

}

printf(“ConsunerB is over\n”);

exit(0);

}

}

}

/*   父进程返回后回收3个子进程  */

wait(0);

wait(0);

wait(0);

/*  断开并撤消2个共享内存  */

shmdt(array);

shmctl(arrayid,IPC_RMID,0);

shmctl(get);

shmctl(getid,IPC_RMID,0);

/*   撤消3个信号量集  */

semctl(emptyid,IPC_RMID,0);

semctl(fullid,IPC_RMID,0);

semctl(mutexid,IPC_RMID,0);

exit(0);

}

Linux共享内存和信号量,Linux共享内存和信号量的实例(2)相关推荐

  1. Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存

    Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存 参考:<linux编程从入门到精通>,<Linux C程序设计大全>,<unix环境高级编程> ...

  2. 《linux程序设计》--读书笔记--第十四章信号量、共享内存和消息队列

    信号量:用于管理对资源的访问: 共享内存:用于在程序之间高效的共享数据: 消息队列:在程序之间传递数据的一种简单方法: 一.信号量 临界代码:需要确保只有一个进程或者一个执行线程可以进入这个临界代码并 ...

  3. 【Linux 内核】进程管理 task_struct 结构体 ⑤ ( files 字段 | nsproxy 字段 | 信号处理相关字段 | 信号量和共享内存相关字段 )

    文章目录 一.task_struct 结构体字段分析 1.files 字段 2.nsproxy 字段 3.信号处理相关字段 4.信号量和共享内存相关字段 在 Linux 内核 中 , " 进 ...

  4. Linux(信号,进程间通信)共享内存,信号量,消息队列

    信号(signal) 1.1 什么是信号? 信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式 1.2 信号的来源 硬件 [1] 用户在终端按下某些键时,终端驱动程序会发送信号给前台进程 ct ...

  5. linux学习---基于内存的IPC(共享内存,信号量数组,消息队列)

    常用的IPC分为两个类别,一是基于文件,而是基于内存 基于文件的分别有匿名管道,有名管道,普通的文件共享,socket文件 如果要看基于文件的IPC,请参考:http://blog.csdn.net/ ...

  6. 【Linux Program】信号量、共享内存和消息队列

    系列文章: 文件操作 数据管理 进程和信号 POSIX 线程 进程间通信:管道 信号量共享内存和消息队列 套接字 文章目录 1. 信号量 1.1 信号量的定义 1.2 Linux 的信号量机制 1.3 ...

  7. linux进程间通信:system V 信号量和共享内存实现进程间同步

    关于信号量和共享内存的相关描述已经在前几篇提到过: 信号量:即内核维护的一个正整数,可以使用内核提供的p/v接口进行该正整数的+/-操作,它主要用来表示系统中可用资源的个数,协调各个进程有序访问资源, ...

  8. Linux C编程--进程间通信(IPC)6--综合应用实例--信号量和共享内存的使用

    实例介绍: 这是一个使用共享存储交换数据的例子.其中,一个程序程序是数据处理程序,另一个程序是数据生成程序.这两个程序使用两个信号量,consumer和producer,来同步它们之间对共享内存的访问 ...

  9. Linux进程间的通信----->共享内存

    共享内存:         顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存.共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式.不同进程之间共享的内存通常安排为同一段物 ...

  10. Linux环境进程间通信(五): 共享内存(上)

    Linux环境进程间通信(五): 共享内存(上) 共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式.两个不同进程A.B共享内存的意思是,同一块物理内存被映射到进程A.B各自的进程地址空间. ...

最新文章

  1. TensorFlow练习26: AI操盘手
  2. 关于人脸识别滥用的十个可能的应对方案
  3. 4.3.5 子网划分和子网掩码
  4. python输出假分数_分数的表示以及计算(c++)
  5. 四大开源无人机项目,极客要Get了
  6. 关于对象不能直接访问私有成员的误区(转)
  7. thinkPHP 数据库操作和分页类
  8. linux透明防火墙--br_netfilter
  9. oracle12c时间,Oracle 12c-选择冒号后的日期时间字符串
  10. fighting小银考呀考不过四级
  11. vue 绑定 class 和 内联样式(style)
  12. 【观点】Ruby优于Python之处(面向hackers)
  13. Python基础学习九 单元测试
  14. 传奇修改map地图教程_传奇服务端内NPC添加MAP地图说明
  15. java pos58打印_POS58小票打印机
  16. php微博采集,微博采集方法
  17. Spring Security 4 使用@PreAuthorize,@PostAuthorize, @Secured, EL实现方法安全(带源码)
  18. php微博批量管理工具,简单快速批量取消微博的关注
  19. dann(胆囊结石的疼痛特点包括)
  20. 微信公众平台测试账号的获取及开发使用【微信开发学习】

热门文章

  1. 微信服务号+支付+php,微信服务号发送营销红包给关注用户步骤及部分php代码
  2. sht-11c语言程序,温湿度传感器SHT11数据手册(中文)版.pdf
  3. 快速锁屏电脑快捷键_电脑系统经典常用的快捷键你知道几个呢?
  4. solr mysql 自动同步_MongoDB和Solr的整合以及实现数据同步功能
  5. ssh-copy-id配置rsync免密访问并rsync同步
  6. 计算机毕业设计源码分享双鱼林,计算机毕业课程设计论文源码-057双鱼林asp教务选课信息系统...
  7. Git 查看帮助命令
  8. Spring集成JDBC组件开发
  9. react-native 发送接收“广播”
  10. 基于JAVA+SpringBoot+Mybatis+MYSQL的足球联赛管理系统