diff --git a/src/app/main.cpp b/src/app/main.cpp index b17f6ce7a..31a4a6ccb 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -33,6 +33,9 @@ #include #include +#if defined(Q_OS_UNIX) +#include +#endif #if !defined Q_OS_WIN && !defined Q_OS_HAIKU #include #elif defined Q_OS_WIN && defined DISABLE_GUI @@ -116,9 +119,17 @@ void displayBadArgMessage(const QString &message); void showSplashScreen(); #endif // DISABLE_GUI +#if defined(Q_OS_UNIX) +void adjustFileDescriptorLimit(); +#endif + // Main int main(int argc, char *argv[]) { +#if defined(Q_OS_UNIX) + adjustFileDescriptorLimit(); +#endif + // We must save it here because QApplication constructor may change it bool isOneArg = (argc == 2); @@ -397,3 +408,16 @@ bool userAgreesWithLegalNotice() 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