每个进程的最大打开文件数

6

在Mac OS X(10.6)中,每个进程的最大打开文件数是多少?

ulimit说是256,sysctl说是10240,但我的测试程序可以创建9469(在gdb下),10252(没有gdb)个文件。

2个回答

9

现在很清楚了。

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个文件。


0

在我的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脚本非常高兴。祝好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接