【 在 haggard (乱曰) 的大作中提到: 】
: 有没有大牛能告诉我
我不是大牛先...
: 这个shm到底是做什么用的?是用于什么之间的通信?
各个bbs程序之间通信咯
: 有没有办法避免shm_utmp错误?(不用每次清shm)
shm出错了当然要清掉咯
: 清除shm这样做的道理又是什么?
因为那个shm有问题咯。
: 据我的理解(粗看了一下代码加上猜测,不知道对不对)
: 共享内存结构UTMPFILE是用来保存当前登录用户信息用的
: 当一个用户试图登录时,先查找共享内存中的记录
: 以防止同一用户的过多登录
嗯,差不多
: 在引起shm_utmp错误的函数shm_init中
: 如果读取共享内存返回0表示,没有用户登录,或发生其它错误
: 实际上有其它用户登录的情况下,也会出现shm错误
: 那么其它引起错误的原因是什么?为什么从telnet登录不会出现这个错误?
是不是不同程序没协调好?
: 如果shm的作用如上的话,telnet不也要读共享内存么
: 如果不在user_info里加上utmpkey,并把含有utmpkey的语句都删除
: 再编译就不会出现shm错误了,
utmp很重要啊...删掉了大家怎么通信呢?
: 我原来猜想可能因此用户就可以从WWW无限次数的登录
: 实际试验不是这样,那么在功能上有什么影响吗?
: 为什么这样就不出错了?即使没有这个utmpkey,仍然要执行shm_init的?
: 并且是在bbslogin访问utmpkey之前。。。
: 这是猜测的UTMPFILE的用途,另外两个引起shm错误的结构BCACHE,UCACHE
: 是做什么用的?
先去学学shm本身是啥东西怎么用然后再看看bcache ucache相关的代码吧:)
--
FROM 128.12.155.*