#ifdef _WIN32 #include <utils/Logger.h> #include <QString> #include <QByteArray> namespace Process { void restartHyperion(bool asNewProcess) {} QByteArray command_exec(const QString& /*cmd*/, const QByteArray& /*data*/) { return QSTRING_CSTR(QString()); } }; #else #include <utils/Process.h> #include <utils/Logger.h> #include <QCoreApplication> #include <QProcess> #include <QStringList> #include <unistd.h> #include <cstdio> #include <iostream> #include <memory> #include <stdexcept> namespace Process { void restartHyperion(bool asNewProcess) { Logger* log = Logger::getInstance("Process"); Info(log, "Restarting hyperion ..."); std::cout << std::endl << " *******************************************" << std::endl << " * hyperion will restart now *" << std::endl << " *******************************************" << std::endl << std::endl; auto arguments = QCoreApplication::arguments(); if (!arguments.contains("--wait-hyperion")) arguments << "--wait-hyperion"; QProcess::startDetached(QCoreApplication::applicationFilePath(), arguments); QCoreApplication::quit(); } QByteArray command_exec(const QString& cmd, const QByteArray& data) { char buffer[128]; QString result; std::shared_ptr<FILE> pipe(popen(cmd.toLocal8Bit().constData(), "r"), pclose); if (pipe) { while (!feof(pipe.get())) { if (fgets(buffer, 128, pipe.get()) != NULL) result += buffer; } } return QSTRING_CSTR(result); } }; #endif