可以將 RLIMIT_NOFILE 設定為 RLIM_INFINITY 嗎?

可以將 RLIMIT_NOFILE 設定為 RLIM_INFINITY 嗎?

setrlimit(我在 C++ 程式碼中使用) 來嘗試將 to 設定RLIMIT_NOFILERLIM_INFINITYgetrlimit然後將rlim_cur&rlim_max設為RLIM_INFINITYand setrlimit()),但出現「不允許操作」錯誤。該程式碼以 root 身份運行。

甚至可以設定RLIM_INFINITYRLIMIT_NOFILE

答案1

RLIMIT_NOFILE的上限是由 定義的最大值/proc/sys/fs/nr_open,並且嘗試將其設為高於該值會導致EPERM。在短時間內(使用內核 2.6.28),可以將其設定為RLIM_INFINITY,但這會導致某些程式出現巨大的效能問題 - 請參閱恢復提交了解詳情。

這記錄在EPERM中的相應條目man setrlimit, 和的描述/proc/sys/fs/nr_openman 5 proc

相關內容