Выполнение команд командной строки Linux в С++

Мне нужно выполнять системные команды и получать информацию, которую они возвращают. С этим отлично справляется вот такая вот функция:

std::string execSystemCall_StdString(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);

    while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr)
        result += buffer.data();

    return result;
}

Но иногда бывают такие ситуации, когда после запуска команды, в терминале необходимо что-то вводить. Например при запуске sudo airmon-ng может возникнуть следующее:

Found phy61 with no interfaces assigned, would you like to assign one to it? [y/n]

Каким образом можно либо игнорировать это, например как когда мы нажимаем ctr+c в терминале, либо отправлять n или y.


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