在Mac OS X(10.6)中,每个进程的最大打开文件数是多少?
ulimit说是256,sysctl说是10240,但我的测试程序可以创建9469(在gdb下),10252(没有gdb)个文件。
现在很清楚了。
ulimit命令是内置于shell中的。您可以使用ulimit -n命令为当前shell(以及从该shell启动的每个程序)设置maxfiles。
10252个文件-这是我的错误...当我从shell启动我的测试程序时,最大打开文件数为253(253 + stdin + stdout + stderr = 256)。
9469个文件-运行在Xcode下的测试程序的结果,似乎Xcode在运行程序之前设置了maxfiles。
ulimit不是系统范围的设置,因此要设置maxfiles的系统范围值,必须使用launchctl(系统中的第一个进程,请尝试'launchctl limit')或sysctl。
答案是256个文件。
在我的Mac上运行一些Python脚本时,我遇到了一个相关的错误。错误抱怨打开文件的限制。
实际上,当我运行ulimit -n
时,看到256,我感到非常惊讶。
如果你来到这里解决这个问题,下一个逻辑步骤是增加限制。
为了补充Dmitry的答案,我将链接以下包含解决方案的gist(在Mac OSX Catalina上对我有效)。
上面链接的配方将指导您如何增加限制。
/Library/LaunchDaemons/limit.maxfiles.plist
/Library/LaunchDaemons/limit.maxproc.plist
在应用load.sh
和系统重启后,我得到了ulimit -n
的输出为524288
。这使我的Python脚本非常高兴。祝好运!