3、中中找到访问入口。IPC标识符:每一个I P C目标都有一个唯一的I P C标识符。这里所指的I P C目标是指一个单独的消息队列、一个信号量集或者一个共享的内存段。系统内核使用此标识符在系统内核中指明 I P C目标。IPC 关键字:想要获得唯一的标识符,则必须使用一个 I P C关键字。客户端进程和服务器端进程必须双方都同意此关键字。这是建立一个客户机/服务器框架的第一步。在System V IPC机制中,建立两端联系的路由方法是和I P C关键字直接相关的。通过在应用程序中设置关键字值,每一次使用的关键字都可以是相同的。一般情况下,可以
4、使用f t o k ( )函数为客户端和服务器端产生关键字值。二、ipcs 命令命令ipcs用于读取System V IPC目标的状态。ipcs -q: 只显示消息队列。ipcs -s: 只显示信号量。ipcs -m: 只显示共享内存。ipcs –help: 其他的参数。 三、消息队列的主要调用 内核中实现消息传递机制的代码基本上都在文件ipc/msg.c中,消息队列的主要调用有下面4个(1)msgget:调用者提供一个消息队列的键标 (用于表示个消息队列的唯一名字),当这个消息队列存在的时候, 这个消息调用负责返回这个队列的标识号;
5、如果这个队列不存在,就创建一个消息队列,然后返回这个消息队列的标识号 ,主要由sys_msgget执行。(2)msgsnd:向一个消息队列发送一个消息,主要由sys_msgsnd执行。(3)msgrcv:从一个消息队列中收到一个消息,主要由sys_msgrcv执行。(4)msgctl:在消息队列上执行指定的操作。根据参数的不同和权限的不同,可以执行检索、删除等的操作,主要由sys_msgctl执行。#include #include #include int msg
6、get( key_t msgkey , int flag );取得一个消息队列的ID,如不存在则建立。返回值: 成功时:消息队列的ID 失败时:-1int msgsnd( int msqid , struct msgbuf *msgp , size_t msgsiz , int msgflag );向消息队列送消息返回值: 成功时:0 失败时:-1msqid是消息队列的ID,size_t msgsiz是结构体成员mdata的大小,msgflag与上