Иногда надо исполнить какую-то команду ОС. Это легко делается с помощью создания нового процесса и получение данных от него через пайп:
#include <iostream> #include <stdio.h> #include <memory> bool run_shell_cmd(const std::string & cmd, std::string & outputStr) { int closePipeResult = -1;
// deleter to close pipe auto pipeDeleter = [&closePipeResult](FILE* pipe) { if(pipe != NULL) closePipeResult = pclose(pipe); };
// create smart poinetr with custom deleter std::unique_ptr<FILE, decltype(pipeDeleter)> pipe(popen(cmd.c_str(), "r"), pipeDeleter); if(pipe.get() == NULL) return false; // read output and save it to string char buffer[128]; while (!feof(pipe.get())) { if (fgets(buffer, 128, pipe.get()) != NULL) outputStr += buffer; } // reset pointer to get result of pclose before exit of function pipe.reset(); return (closePipeResult == 0); }