MSG 一、实验目的 1、了解什么是消息 2、熟悉消息传送的机理
二、实验内容 消息的创建、发送和接收
使用系统调用msgget( ),msgsnd( ),msgrev( ),及 msgctl( )编制一长度为1k 的消息发送和接收的程序 三、实验内容指导提示 (一)、什么是消息 消息(message)是一个格式化的可变长的信息单元
消息机制允许由一个进程给其它任意的进程发送一个消息
当一个进程收到多个消息时,可将它们排成一个消息队列
消息使用二种重要的数据结构:一是消息首部,其中记录了一些与消息有关的信息,如消息数据的字节数;二个消息队列头表,其每一表项是作为一个消息队列的消息头,记录了消息队列的有关信息
1、消息机制的数据结构 (1)消息首部 记录一些与消息有关的信息,如消息的类型、大小、指向消息数据区的指针、消息队列的链接指针等
(2)消息队列头表 其每一项作为一个消息队列的消息头,记录了消息队列的有关信息如指向消息队列中第一个消息和指向最后一个消息的指针、队列中消息的数目、队列中消息数据的总字节数、队列所允许消息数据的最大字节总数,还有最近一次执行发送操作的进程标识符和时间、最近一次执行接收操作的进程标识符和时间等
2、消息队列的描述符 UNIX 中,每一个消息队列都有一个称为关键字(key )的名字,是由用户指定的;消息队列有一消息队列描述符,其作用与用户文件描述符一样,也是为了方便用户和系统对消息队列的访问
(二)、涉及的系统调用 1
msgget( ) 创建一个消息,获得一个消息的描述符
核心将搜索消息队列头表,确定是否有指定名字的消息队列
若无,核心将分配一新的消息队列头,并 对它进行初 始 化,然 后给用户返 回一个消息队列描述符,否则 它只 是检 查 消息队列的许可权 便返 回
系统调用格式: msgqid=msgget(key ,fla