Browse Source

Adjust open file descriptor limit on startup

This raises qbt's open file descriptor limit to the available maximum
(within user privileges) and thus users don't need to adjust it
manually anymore.
adaptive-webui-19844
Chocobo1 6 years ago
parent
commit
d0bfe9a661
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 24
      src/app/main.cpp

24
src/app/main.cpp

@ -33,6 +33,9 @@
#include <cstdlib> #include <cstdlib>
#include <memory> #include <memory>
#if defined(Q_OS_UNIX)
#include <sys/resource.h>
#endif
#if !defined Q_OS_WIN && !defined Q_OS_HAIKU #if !defined Q_OS_WIN && !defined Q_OS_HAIKU
#include <unistd.h> #include <unistd.h>
#elif defined Q_OS_WIN && defined DISABLE_GUI #elif defined Q_OS_WIN && defined DISABLE_GUI
@ -116,9 +119,17 @@ void displayBadArgMessage(const QString &message);
void showSplashScreen(); void showSplashScreen();
#endif // DISABLE_GUI #endif // DISABLE_GUI
#if defined(Q_OS_UNIX)
void adjustFileDescriptorLimit();
#endif
// Main // Main
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
#if defined(Q_OS_UNIX)
adjustFileDescriptorLimit();
#endif
// We must save it here because QApplication constructor may change it // We must save it here because QApplication constructor may change it
bool isOneArg = (argc == 2); bool isOneArg = (argc == 2);
@ -397,3 +408,16 @@ bool userAgreesWithLegalNotice()
return false; return false;
} }
#if defined(Q_OS_UNIX)
void adjustFileDescriptorLimit()
{
rlimit limit {};
if (getrlimit(RLIMIT_NOFILE, &limit) != 0)
return;
limit.rlim_cur = limit.rlim_max;
setrlimit(RLIMIT_NOFILE, &limit);
}
#endif

Loading…
Cancel
Save