在windows下用emacs,特别是开了native comp之后,很容易遇到 too may open files的报错。
之前尝试spacemacs/centaur emacs的配置,几乎是必然遇到。遇到了就只能重新打开emacs
看了下论坛里面,以往也有很多这方面的提问,但是没有答案。
于是翻了下源码,发现一个奇怪的地方,如下在src/w32.h
/* MSVC runtime library has limit of 64 descriptors by default */
#define FD_SETSIZE 64
...
#define MAXDESC FD_SETSIZE
#define MAX_CHILDREN MAXDESC/2
FD_SETSIZE这个值在linux下默认是1024。
windows下并不是有限制,这个值也是可以改的,只是默认为64。
于是把这里改为1024,并且编译时也指定一下宏,编译命令如下
# 完整的编译脚本 https://github.com/Eason0210/build-emacs
CFLAGS='-march=native -Ofast -fno-finite-math-only -DFD_SETSIZE=1024' ./configure --without-dbus --without-native-compilation
重新编译出来的emacs,我本地测试,使用了 centaur emacs,我自己的配置。都没有出现过 too many open files的报错了。
其他有这个问题的人也可以试试,如果能解决这个问题,可以给emacs官方提下pr。