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 在运行程序之前设置了 tha maxfiles。
ulimit 不是系统范围的设置,这就是为什么要为 maxfiles 设置系统范围的值,您必须使用 launchctl(系统中的第一个进程,尝试“launchctl limit”)或 sysctl。
答案是 256 个文件。
在我的 Mac 上运行一些 python 脚本时,我遇到了一个相关的错误。该错误抱怨打开文件的限制。
ulimit -n
看到告诉我256,我实际上很惊讶。
如果您最终在这里解决此问题,那么下一个合乎逻辑的步骤是增加限制。
为了补充 Dmitry 的答案,我将以下要点与解决方案联系起来(在 Mac OSX Catalina 上为我工作)。
上面链接的食谱将指导您如何增加限制。
/Library/LaunchDaemons/limit.maxfiles.plist
/Library/LaunchDaemons/limit.maxproc.plist
应用load.sh
和系统rebot 后,我ulimit -n
说524288
。这让python脚本很高兴。GL!