Lanzamiento tiene dos claves — HardResourceLimits
y SoftResourceLimits
— que se pueden utilizar para colocar límites en los recursos de los trabajos. Toman un diccionario de enteros, por lo que puedes agregar algo como lo siguiente a tu archivo launchd plist para obtener una solución permanente:
HardResourceLimits
NumberOfFiles
500
Esto debería limitar la cantidad de archivos que el proceso tiene abiertos a 500.
No estoy realmente seguro de cuál es la diferencia entre los límites 'suave' y 'duro', aunque la página del manual para launchd.plist dice (de forma críptica):
NumberOfFiles
El número máximo de archivos abiertos para este proceso. Establecer este valor en un demonio de sistema establecerá el valor sysctl(3) kern.maxfiles (SoftResourceLimits) o kern.maxfilesperproc (HardResourceLimits) en adición a los valores setrlimit(2).
sysctl(3) no tiene una página de manual en mi máquina, y es muy temprano en la mañana para que yo haga una búsqueda en Google. Sin embargo, sugiero que lo que realmente estás viendo es un error de codificación, y deberías corregir esto en el demonio, no depender de launchd. launchd prefiere tener control flexible sobre las cosas, y preferiría que los usuarios eviten dictar demasiado.