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