加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux System V 消息队列的内核结构和msgget、msgctl 函数

发布时间:2016-09-27 10:12:28 所属栏目:Linux 来源:站长网
导读:一、消息队列 1、消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法 2、每个数据块都被认 为是有一个类型,接收者进程接收的数据块可以有不同的类
副标题[/!--empirenews.page--]

一、消息队列

1、消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法

2、每个数据块都被认 为是有一个类型,接收者进程接收的数据块可以有不同的类型值

3、消息队列与管道不同的是,消息队列是基于消息 的,而管道是基于字节流的,且消息队列的读取不一定是先入先出。

4、消息队列也有管道一样的不足,就是每个消息的 最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限 (MSGMNI),这三个参数都可以查看:

simba@ubuntu:~/Documents/code/linux_programming/UNP/system_v$ cat /proc/sys/kernel/msgmax

8192

simba@ubuntu:~/Documents/code/linux_programming/UNP/system_v$ cat /proc/sys/kernel/msgmnb

16384

simba@ubuntu:~/Documents/code/linux_programming/UNP/system_v$ cat /proc/sys/kernel/msgmni

1711

二、IPC对象数据结构

内核为每个IPC对象维护一个数据结构

struct ipc_perm {

key_t          __key;       /* Key supplied to xxxget (2) */

uid_t          uid;         /* Effective UID of owner */

gid_t          gid;         /* Effective GID of owner */

uid_t          cuid;        /* Effective UID of creator */

gid_t          cgid;        /* Effective GID of creator */

unsigned short mode;        /* Permissions */

unsigned short __seq;       /* Sequence number */

};

消息队列,共享内存和信号量都有这样一个共同的数据结构。

三、消 息队列结构

struct msqid_ds {

struct ipc_perm msg_perm;     /* Ownership and permissions */

time_t    msg_stime;    /* Time of last msgsnd(2) */

time_t    msg_rtime;    /* Time of last msgrcv(2) */

time_t    msg_ctime;    /* Time of last change */

unsigned long    __msg_cbytes; /* Current number of bytes in

queue (nonstandard) */

msgqnum_t    msg_qnum;     /* Current number of messages

                                              in queue */

msglen_t    msg_qbytes;   /* Maximum number of bytes

                                               allowed in queue */

pid_t                 msg_lspid;      /* PID of last msgsnd(2) */

pid_t                  msg_lrpid;      /* PID of last msgrcv(2) */

};

可以看到第一个条目就是IPC结构体,即是共有的,后面的都是消息 队列所私有的成员。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读