
Ich verwende setrlimit(
) in meinem C++-Code, um zu versuchen, das auf zu setzen RLIMIT_NOFILE
( RLIM_INFINITY
und getrlimit
dann rlim_cur
& rlim_max
auf RLIM_INFINITY
und 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_INFINITY
einzustellen RLIMIT_NOFILE
?
Antwort1
RLIMIT_NOFILE
ist 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 EPERM
Eintrag inman setrlimit
, Unddie Beschreibung von /proc/sys/fs/nr_open
inman 5 proc
.