问题 在开发过程中,遇到一个问题,即使用FD_ISSET时,当文件描述符数量超过1023,导致netd进程出现crash。通过代码和log分析,发现这是由于内核限制导致的数组越界问题。 总结:FD_ISSET(sock, &read_fds);其中sock不能大于1023,要不然就会出现不可控的问题,如果一个进程打开的文件描述符超过了1023,又要用select进行监听,就会出现问题。 解决方法 不使用select,使用poll。 参考代码链接(需要翻墙): 添加链接描述 给你们来点截图,供访问不了链接的小伙伴看