Linux select 文件描述符1024限制

最近系统出现宕机的情况,分析core文件,所有的线程都在select处。

最后怀疑是文件描述符超过了1024。但是想到Apache也是采用select的io模型。所以还是很不理解。

查看了Linux的内核源码linux-2.6.32。

static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
{
    unsigned long _tmp = fd / __NFDBITS;
    unsigned long _rem = fd % __NFDBITS;
    fdsetp->fds_bits[_tmp] |= (1UL<<_rem);
}

#define __NFDBITS    (8 * sizeof(unsigned long))

typedef struct {
    unsigned long fds_bits [__FDSET_LONGS];
} __kernel_fd_set;

#define __FDSET_LONGS   (__FD_SETSIZE/__NFDBITS)

#define __FD_SETSIZE    1024

起关键作用的就是红字部分。

你可能感兴趣的:(UNIX/linux)