Frage

Ich muss den Befehl ausführen „ulimit -n 400“ zu erhöhen Anzahl der erlaubten offenen Dateien, bevor ich in C geschrieben mein Programm starten, aber ist es eine Möglichkeit, das Äquivalent von innerhalb des C-Programm zu tun?

Das heißt, erhöhen Sie die Anzahl der erlaubten offenen Dateideskriptoren für diesen Prozess. (Ich bin nicht daran interessiert pro Thread Grenzen.)

Wird es ulimits beinhalten Einstellung, dann ein Kind gabeln, die erlaubt werden, mehr offene Dateien zu haben?

Natürlich könnte ich einen Shell-Wrapper schreiben, die ulimit läuft, dann mein C-Programm starten, aber es fühlt sich weniger elegant. Ich könnte auch durch den Quellcode von bash grep oder sh zu sehen, wie es dort getan wird -. Vielleicht werde ich, wenn ich hier keine Antwort bekommen

Auch im Zusammenhang, wenn Sie auf eine Menge von Datei-Deskriptoren auswählen möchten, Blick hier .

War es hilfreich?

Lösung

Ich denke, dass Sie suchen setrlimit(2) .

Andere Tipps

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

int main (int argc, char *argv[])
{
  struct rlimit limit;

  limit.rlim_cur = 65535;
  limit.rlim_max = 65535;
  if (setrlimit(RLIMIT_NOFILE, &limit) != 0) {
    printf("setrlimit() failed with errno=%d\n", errno);
    return 1;
  }

  /* Get max number of files. */
  if (getrlimit(RLIMIT_NOFILE, &limit) != 0) {
    printf("getrlimit() failed with errno=%d\n", errno);
    return 1;
  }

  printf("The soft limit is %llu\n", limit.rlim_cur);
  printf("The hard limit is %llu\n", limit.rlim_max);

  /* Also children will be affected: */
  system("bash -c 'ulimit -a'");

  return 0;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top