Выполнение команд командной строки 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.