Können Sie RLIMIT_NOFILE auf RLIM_INFINITY setzen?

Können Sie RLIMIT_NOFILE auf RLIM_INFINITY setzen?

Ich verwende setrlimit() in meinem C++-Code, um zu versuchen, das auf zu setzen RLIMIT_NOFILE( RLIM_INFINITYund getrlimitdann rlim_cur& rlim_maxauf RLIM_INFINITYund zu setzen setrlimit()), aber ich erhalte die Fehlermeldung „Operation nicht zulässig“. Der Code wird als Root ausgeführt.

ist es überhaupt möglich, es RLIM_INFINITYeinzustellen RLIMIT_NOFILE?

Antwort1

RLIMIT_NOFILEist durch das durch definierte Maximum begrenzt /proc/sys/fs/nr_open, und der Versuch, es darüber zu setzen, führt zu EPERM. Für eine kurze Zeit (mit Kernel 2.6.28) war es möglich, es auf zu setzen RLIM_INFINITY, aber das verursachte bei einigen Programmen große Leistungsprobleme – siehedas Revert-Commitfür Details.

Dies ist dokumentiert inder entsprechende EPERMEintrag inman setrlimit, Unddie Beschreibung von /proc/sys/fs/nr_openinman 5 proc.

verwandte Informationen