BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


[C] ipc_perm中的seq字段

首页 » 论坛 » C/C++ »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
zhongyj
精灵王




UID:139868
注册:2004-3-5
最后登录: 2008-09-08
帖子:257
精华:0

可用积分:788 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2008-7-18 15:07 
UNPv2中3.6节提到ipc_perm->seq是slot usage sequence number
我用下面的程序测试,solaris下
#include <sys/msg.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char **argv)
{
        int             i, msqid;

        for (i = 0; i < 10; i++) {
                msqid = msgget(IPC_PRIVATE,  IPC_CREAT);
                struct msqid_ds info;
                msgctl(msqid, IPC_STAT, &info);
                printf("msqid = %d seq = %lu\n", msqid, info.msg_perm.seq);

                msgctl(msqid, IPC_RMID, NULL);
        }
        exit(0);
}
如果用cc编译输出是
msqid = 1254850 seq = 4290771496
msqid = 1259970 seq = 4290771496
msqid = 1265090 seq = 4290771496
msqid = 1270210 seq = 4290771496
msqid = 1275330 seq = 4290771496
msqid = 1280450 seq = 4290771496
msqid = 1285570 seq = 4290771496
msqid = 1290690 seq = 4290771496
msqid = 1295810 seq = 4290771496
msqid = 1300930 seq = 4290771496
如果用C++编译器CC编译输出是
msqid = 1306050 seq = 0
msqid = 1311170 seq = 0
msqid = 1316290 seq = 0
msqid = 1321410 seq = 0
msqid = 1326530 seq = 0
msqid = 1331650 seq = 0
msqid = 1336770 seq = 0
msqid = 1341890 seq = 0
msqid = 1347010 seq = 0
msqid = 1352130 seq = 0

4290771496正好是2的32次幂。
这个seq字段到底是用来做什么的呢

另外从那个msgid来看,重用ID应该是上次ID加上系统设置的最大消息队列数。上面的是5120。系统的也是5120



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖讨论:TPC-E对服务器采购的价值 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘

首页 » 论坛 » C/C++ »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.045936 second(s), 4 queries , Gzip enabled