Как установить таймаут при исполнение 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;
}

я застываю на исполнение этого кода. Как можно определить, если хост не существует, то вернуть пустой результат без ожидания ответа.


Ответы (0 шт):