Wietse Venema:
> Do you need code for testing the sysctl() stuff?
To make the job easier, below is a patch to unmodified open_limit.c
Wietse
*** ./open_limit.c- Fri Dec 11 13:55:29 1998
--- ./open_limit.c Fri Mar 22 15:44:13 2013
***************
*** 34,39 ****
--- 34,48 ----
#include <sys/resource.h>
#include <errno.h>
+ /*
+ * XXX MacOSX rlim_cur is only 256, rlim_max is infinite, so we use the
+ * kern.maxfilesperproc value instead.
+ */
+ #ifdef MACOSX
+ #include <sys/sysctl.h>
+ #define MAX_FILES_PER_PROC "kern.maxfilesperproc"
+ #endif
+
/* Application-specific. */
#include "iostuff.h"
***************
*** 63,68 ****
--- 72,87 ----
if (getrlimit(RLIMIT_NOFILE, &rl) < 0)
return (-1);
if (limit > 0) {
+ #ifdef MACOSX
+ long current_limit;
+ size_t len = sizeof(current_limit);
+
+ if (sysctlbyname(MAX_FILES_PER_PROC, ¤t_limit, &len,
+ (void *) 0, (size_t) 0) < 0)
+ return (-1);
+ if (limit > current_limit)
+ limit = current_limit;
+ #endif
if (limit > rl.rlim_max)
rl.rlim_cur = rl.rlim_max;
else