下载此文档

UNIX Linux实验教程 4实验四Linux进程间通信.doc


文档分类:IT计算机 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
实验四 Linux进程间通信
 
一. 实验目的
加深对操作系统进程间通信机制的理解,掌握利用管道、共享内存、消息通信和信号量集等机制实现进程间通信的程序设计技术。
二. 实验指导
在多任务计算机系统中,每个进程都具有自己独立的全*buf;
其中,函数调用成功时返回0,不成功则返回-1。buf是用户缓冲区地址,供用户存放控制参数和查询结果;cmd是规定的命令,命令可分三类:
(1)IPC_STAT。查询有关消息队列情况的命令。如查询队列中的消息数目、队列中的最大字节数、最后一个发送消息的进程标识符、发送时间等;
(2)IPC_SET。按buf指向的结构中的值,设置和改变有关消息队列属性的命令。如改变消息队列的用户标识符、消息队列的许可权等;
(3)IPC_RMID。消除消息队列的标识符。
(三) 共享内存通信系统调用
1. 创建、检索一个共享存储区
函数格式:
#include<sys/>
#include<sys/>
#include<sys/>
        int  shmget(key_t key, int  size, int  flag);
其中,key是共享存储区关键字;size是其大小(以字节计);flag是用户设置的标志:IPC_CREAT表示若系统中尚无指名的共享存储区,则由核心建立一个共享存储区;若系统中已有共享存储区,返回存在的共享内存区标识符。
2. 获得共享内存区虚拟地址
    从逻辑上将一个共享存储区附接到进程的虚拟地址空间上。
函数格式:
#include<sys/>
#include<sys/>
#include<sys/>
         char  *shmat(int  shmid, char  *addr, int  flag);
其中,shmid是共享存储区的标识符;addr是用户给定的,将共享存储区附接到进程的虚地址空间,其值为0时,由系统分配共享内存的虚拟内存地址;flag规定共享存储区的读、写权限,以及系统是否应对用户规定的地址做舍入操作,SHM_RDONLY表示只读,0表示可读写。该系统调用的返回值是共享存储区所附接到的进程虚拟地址viraddr。
3. 断开共享内存的进程虚拟地址
把一个共享存储区从指定进程的虚地址空间断开。
函数格式:
#include<sys/>
#include<sys/>
#include<sys/>
        int  shmdt(char  *addr);
其中,addr是要断开连接的虚地址,亦即以前由连接的系统调用shmat( )所返回的虚地址。调用成功时,返回0值,调用不成功,返回-1。
4. 共享存储区的控制
读取和修改共享内存区域的状态。
函数格式:
#include<sys/>
#include<sys/>
#include<sys/>
            int  shmctl(int  shmid, int  cmd, struct  shmid_ds  *buf);
            int  shmid,cmd;

UNIX Linux实验教程 4实验四Linux进程间通信 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小布
  • 文件大小87 KB
  • 时间2022-07-25