/*
- * Copyright (c) 2014-2020 Samsung Electronics Co., Ltd All Rights Reserved
+ * Copyright (c) 2014-2024 Samsung Electronics Co., Ltd All Rights Reserved
*
* Contact: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
*
* @brief Main Cynara daemon file
*/
+#include <cerrno>
+#include <cstdlib>
#include <exception>
#include <fcntl.h>
-#include <iostream>
#include <stdlib.h>
+#include <sys/resource.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#endif
#include <common.h>
+#include <common/error/SafeStrError.h>
#include <log/log.h>
#include "CmdlineParser.h"
init_log();
+ // Increase the soft limit of open file descriptors
+ rlimit limit;
+ if (prlimit(0, RLIMIT_NOFILE, nullptr, &limit)) {
+ LOGE("prlimit() failed - %s", Cynara::safeStrError(errno).c_str());
+ } else {
+ LOGW("Open fd limit: %zu", static_cast<size_t>(limit.rlim_cur));
+ if (limit.rlim_cur < limit.rlim_max) {
+ limit.rlim_cur = limit.rlim_max;
+ LOGW("Increasing open fd limit to %zu", static_cast<size_t>(limit.rlim_max));
+ if (prlimit(0, RLIMIT_NOFILE, &limit, nullptr)) {
+ LOGE("prlimit() failed - %s", Cynara::safeStrError(errno).c_str());
+ }
+ }
+ }
+
Cynara::Cynara cynara;
LOGI("Cynara service is starting ...");
cynara.init();