- 论坛徽章:
- 0
|
原帖由 群雄逐鹿 于 2009-8-18 16:19 发表 ![]()
好吧,我再说说。
1. CONN_MAX
老实说,开始只注意到listen里面,使用CONN_MAX使用限制了做大连接数,最大连接数不等于最大fd+1,这个你同意吧。
还真没留意到你用RLIMIT_NOFILE来做过限制。
...
哎。。。 我真不得不怀疑你是否真的写过这类程序了, 最大连接数怎么来的?加入我限制最大连接数未10240 你觉得fd的值会超过10240?
你没看见RLIMIT_NOFILE?
- /* Set resource limit */
- setrlimiter("RLIMIT_NOFILE", RLIMIT_NOFILE, CONN_MAX);
复制代码
就算失败这个值是不可能大于我设置的CONN_MAX的, 因为CONN_MAX 远大于默认的值,不成功的情况下是采用默认值。
不过你说的 “在某些系统上,设限制为某个值,实际返回的fd可以超过。” 是你自己发明的还是确切有理论支持?请问fd的值是如何增加的?
这个问题到此为止。
buffer[CONN_MAX][EV_BUF_SIZE]
n == EV_BUF_SIZE
buffer[rfd][n] = 0;
至于后面那个问题,我也不再继续讨论,我只是想问问你的所谓溢出的理由,不要幼稚的把我read()当作string后面一定会有一个\0的情况,建议你好好理解一下指针。
从你上面的那个问题来看,你的某些想法很幼稚,基本没有事实和理论为基础,不过是刚愎自用的在那说自己的理由罢了,估计你就没认真的写过几行c代码,还是那句话,你看过的肯定比你写过的多很多,但是不代表你看的都是正确的。
[ 本帖最后由 redor 于 2009-8-18 17:42 编辑 ] |
|