#include #include #include #include #include #include namespace deerith { std::vector executing_servers; } void deerith::execute_server(const char *server_executable_path, int port) { pid_t pid = fork(); if (pid < 0) { deerith_error("execute_server fatal error"); } if (pid > 0) { executing_servers.push_back(pid); deerith_trace("server created"); } else { execl(server_executable_path, server_executable_path, "-p", "8080", nullptr); deerith_error("Fatal error executing server"); _exit(1); } } void deerith::shutdown_executing_servers() { for (pid_t pid : executing_servers) { kill(pid, SIGTERM); waitpid(pid, nullptr, 0); } executing_servers.clear(); }