So erhöhen Sie das Limit für "maximal geöffnete Dateien" in C unter Mac OS X

Die Standardbeschränkung für die maximale Anzahl geöffneter Dateien unter Mac OS X beträgt 256 (ulimit -n), und meine Anwendung benötigt ungefähr 400 Datei-Handler.

Ich habe versucht, das Limit mit setrlimit () zu ändern, aber selbst wenn die Funktion korrekt ausgeführt wird, bin ich immer noch auf 256 begrenzt.

Hier ist das Testprogramm, das ich benutze:

#include <stdio.h>
#include <sys/resource.h>

main()
{
  struct rlimit rlp;

  FILE *fp[10000];
  int i;

  getrlimit(RLIMIT_NOFILE, &rlp);
  printf("before %d %d\n", rlp.rlim_cur, rlp.rlim_max);

  rlp.rlim_cur = 10000;
  setrlimit(RLIMIT_NOFILE, &rlp);

  getrlimit(RLIMIT_NOFILE, &rlp);
  printf("after %d %d\n", rlp.rlim_cur, rlp.rlim_max);

  for(i=0;i<10000;i++) {
    fp[i] = fopen("a.out", "r");
    if(fp[i]==0) { printf("failed after %d\n", i); break; }
  }

}

und die Ausgabe ist:

before 256 -1
after 10000 -1
failed after 253

Ich kann die Personen, die meine Anwendung verwenden, nicht bitten, in eine / etc-Datei oder Ähnliches zu stöbern. Ich brauche die Anwendung, um es selbst zu tun.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage