深入理解System V原理
1. sysem v消息队列
------------------------------------------------
首先,系统中的消息队列,在内核中会维护一个叫msqid_ds的信息结构
struct msqid_ds {
struct ipc_perm msg_perm; /* Ownership and permissions */
struct msg *msg_frist /* ptr to first message on queue */
struct msg *msg_last /* ptr to last message on queue */
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) */
};
这个消息队列的链表中,维护这三个消息,消息类型分别为100,200,300. 长度为1, 2 ,3字节。
具体这个消息是如何定义的,我们之后在谈。
看到了这个结构后就可以开始理解后面所有的函数的作用了。
int msgget(key_t key, int oflag);
这个函数的参数和