Launchd a deux clés - HardResourceLimits
y SoftResourceLimits
- qui peut être utilisée pour limiter les ressources des emplois. Ils prennent un dictionnaire d'entiers, de sorte que vous pouvez ajouter quelque chose comme ce qui suit à votre plist launchd pour obtenir une solution permanente :
<key>HardResourceLimits</key>
<dict>
<key>NumberOfFiles</key>
<integer>500</integer>
</dict>
Cela devrait limiter à 500 le nombre de fichiers ouverts par ce processus.
Je ne suis pas vraiment certain de la différence entre les limites "douces" et "dures", bien que la page de manuel de launchd.plist dise (de façon cryptique) :
Nombre de fichiers
Nombre maximal de fichiers ouverts pour ce processus. La définition de cette valeur dans un démon système définira la valeur sysctl(3) kern.maxfiles (SoftResourceLimits) ou kern.maxfilesperproc (HardResourceLimits) en plus des valeurs setrlimit(2).
sysctl(3) n'a pas de page de manuel sur ma machine, et il est trop tôt le matin pour que j'aille faire une recherche sur google. Je dirais cependant que ce que vous recherchez réellement est une erreur de codage, et que vous devriez la corriger dans le démon, sans vous fier à launchd. launchd aime avoir un contrôle flexible sur les choses, et préférerait que les utilisateurs évitent de trop dicter leur conduite.