第四课 共享内存和消息队列

        通过编写本实验程序,熟练掌握共享内存,消息队列相关函数的操作。

    (1) 编译运行教科书上
          P266示例程序
思考题:
1)编译运行源代码,说明该程序的功能.
2)执行n 次,看程序的执行结果.
3)是否可直接在终端系统提示符下运行ipcs命令?试执行之。
4)说明P266示例程序运行结果中的nattch值是如何变化的,其变化说明了什么?
5)该怎么删除nattch值为0的共享内存?
     P270示例程序
思考题:
1)编译运行源代码,说明该程序的功能.
     自出题:
           通过查找资料实现两个进程通过消息队列实现进程通信.
     P275示例程序
思考题:
1)编译运行源代码,说明该程序的功能.
2)程序有没有错误?执行结果是什么?如果存在问题,该怎么修改?
     自出l题:
           通过查找资料实现两个进程利用共享内存实现进程通信.

 

注意点

     1. nattch 值为 共享内存 创建之后的引用值,0表示没有被引用,大于零代表有被引用

     2. shmdt 和 shmctl 的区别

   shmdt(addr)使进程中的shmid无效化,不可以使用。但是保留空间。 

   shmctl(shmid,IPC_RAID,0) 删除共享内存,彻底不可用,释放空间。

   注意这里的shmctal 的原型是 int shmctl( int shm_id, int cmd, struct shmid_ds *buf );

   只有当shmid_ds 中的 shm_nattch 域为零时,才会真正执行删除命令,否则不会删除该段。   
     3. 建立ipc 通信的时候产生ID值 使用ftok 函数

   http://blog.csdn.net/hwz119/archive/2007/05/17/1613601.aspx 这里有一个关于 ftok 函数的

 

参考程序答案见 第四课 习题之我解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值