Dieser Fork-Fehler bedeutet normalerweise, dass das übergeordnete Programm einen oder mehrere untergeordnete Prozesse nicht ausführen konnte, da ein Ressourcenlimit erreicht wurde, entweder die maximal zulässige Anzahl von Prozessen (der EAGAIN
Fehler) oder die maximal zulässige Speichermenge ( ENOMEM
Fehler). Die Manpage von Fork (2) sagt:
Fork() will fail and no child process will be created if: [EAGAIN] The system-imposed limit on the total number of processes under execution would be exceeded. This limit is configuration-dependent. [EAGAIN] The system-imposed limit MAXUPRC (<sys/param.h>) on the total number of pro- cesses under execution by a single user would be exceeded. [ENOMEM] There is insufficient swap space for the new process.
Es gibt verschiedene Möglichkeiten, OS X Beschränkungen aufzuerlegen:
- Sitzungslimit pro Sitzung, das vom
ulimit
Befehl festgelegt wird. Sie können das aktuelle Limit anzeigen, indem Sie ausführenulimit -a
und ein neues Limit festlegen, z. B.ulimit -u 1000
um das Limit für max proc auf 1000 festzulegen. Dieses Limit bleibt bis zum Ende der aktuellen Termian-Sitzung erhalten. /Library/LaunchDaemons/limit.maxfiles.plist
Systemgrenzen werden mit launchd in einer Datei um festgelegt (nur OS X 10.9+).
Weitere Einzelheiten finden Sie in dieser Antwort .