Как установить таймаут при исполнение ssh команды
У меня есть такая функция:
std::string exec(const std::string &cmd)
{
std::array<char, 128> buffer{};
std::string result;
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd.c_str(), "r"), pclose);
if (!pipe) {
return std::string();
}
while (fgets(buffer.data(),
buffer.size(), pipe.get()) != nullptr) {
result += buffer.data();
}
return result;
}
Пример ее использования:
int main()
{
std::cout << exec("ssh [email protected] cat /proc/cpuinfo | grep \"model name\" | head -1");
return 0;
}
// Output results: AMD Ryzen 5 3600 Six-Core Processor
Все работает, но лишь тогда, когда хост указан верно. Но при установки неверного хоста:
int main()
{
std::cout << exec("ssh [email protected] cat /proc/cpuinfo | grep \"model name\" | head -1");
return 0;
}
я застываю на исполнение этого кода. Как можно определить, если хост не существует, то вернуть пустой результат без ожидания ответа.