- 主题:有没有统计已注册用户数的代码?
你改完了有没有清共享内存重启动整个程序阿
【 在 cometcaptor (参宿四[☆]一闪一闪亮晶晶) 的大作中提到: 】
: 为什么我在ucache里添个int然后去读它每次都会返回0啊...
--
FROM 61.182.213.*
那么就把你的代码改动了什么,做了什么操作都详细的写出来。。。
【 在 cometcaptor (参宿四[☆]一闪一闪亮晶晶) 的大作中提到: 】
: 重启了的,连虚拟机都重启了……
--
FROM 61.182.213.*
你的idnumber定义在什么地方的
详细阿,说详细阿。。。
【 在 cometcaptor (参宿四[☆]一闪一闪亮晶晶) 的大作中提到: 】
: 加了一个int idnumber;
: void countidnumber(void)
: {
: ...................
--
FROM 61.182.213.*
【 在 cometcaptor (参宿四[☆]一闪一闪亮晶晶) 的大作中提到: 】
: 加了一个int idnumber;
: void countidnumber(void)
: {
: int i;
: idnumber = 0;
: for (i=0;i<MAXUSERS;i++)
: if (uidshm->passwd[i].userid[0]!='\0')
: idnumber++;
: }
: int getidnumber(void)
: {
: return idnumber;
: }
: 然后在load_ucache和flush_ucache里countidnumber,登录时getidnumber,但是返回0
还有,countidnumber具体是在那个位置调用的,不要只说是在这个函数里面,放在什么
位置,有没有放在if里面,差别可就大了。问问题最忌讳的就是太自信。。。觉得
自己有些地方是绝对不会搞错的,于是就不说详细。。。
--
FROM 61.182.213.*
load_ucache是miscd daemon启动的时候才会调用的函数
别的进程都只是调用resolve_ucache来attach uidshm
而你的idnumber定义的是ucache.c里面的全局变量,各进程是独立的。
所以你只是修改了miscd某个进程当中的idnumber,而别的所有进程的idnumber还保持
他们原始的全局变量默认初始值0。
你可以把idnumber放入UCACHE结构当中,这样就属于uidshm这个共享内存的一部分,
你在miscd进程修改了,别的进程也都会看到这个修改。但是要注意UCACHE结构是
共享内存结构,直接决定共享内存大小,如果你修改了这个,必须完全停止系统
重新编译,完全清理掉共享内存,重新启动系统。精华区里面有我写的如何重启动
系统的说明。如果这里你出了一点点小差错,就会造成各个进程认为共享内存结构
不同,读写就会完全乱掉...
【 在 cometcaptor (参宿四[☆]一闪一闪亮晶晶) 的大作中提到: 】
: 这样的
: struct UCACHE {
: ucache_hashtable hashtable;
: ...................
--
FROM 61.182.213.*
对了你在flush_ucache里面更新这个的话,那就只有定时更新。
如果你要进站时实时显示当前注册用户数,list.c里面貌似已经有一个allusers()函数了,
只不过每次都要遍历比较费罢了...小站就无所谓了...
【 在 cometcaptor (参宿四[☆]一闪一闪亮晶晶) 的大作中提到: 】
: 这样的
: struct UCACHE {
: ucache_hashtable hashtable;
: ...................
--
FROM 61.182.213.*
把所有程序关掉
清共享内存
root执行ipcs确认清干净了 <- 这一步的结果你可以贴上来给大家看看
再启动起来
【 在 cometcaptor (参宿四[☆]一闪一闪亮晶晶) 的大作中提到: 】
: 好像还是有问题
: struct UCACHE {
: ucache_hashtable hashtable;
: ...................
--
FROM 61.182.213.*
看error log里面有没有啥东西...
【 在 cometcaptor (参宿四[☆]一闪一闪亮晶晶) 的大作中提到: 】
: 我是重启后把bbs目录删掉,然后重新
: make clean,make,make install,make install-home然后启动的....
--
FROM 61.182.213.*
这两个文件不是符号连接在一起的么。。。
【 在 cometcaptor (参宿四[☆]一闪一闪亮晶晶) 的大作中提到: 】
: 我知道我错在哪里了……我把src里的ucache.c改了却傻了吧叽忘了改libBBS里的ucache.c
: .....巨寒....
--
FROM 61.182.213.*
你daemon/下面的程序有没有重新连接
【 在 cometcaptor (参宿四[☆]一闪一闪亮晶晶) 的大作中提到: 】
: 好像没有……我把ucache.c覆盖掉libBBS里的就能登录了。
: 但是我telnet 127.0.0.1会提示我“因为某些系统原因不能注册新账号”
--
FROM 61.182.213.*