В Windows вы можете сделать это, используя некоторые функции WinAPI, такие как ShellExecute
и CreateProcess
(есть еще несколько, которые я не помню). Вы получаете командную строку из вашего графического интерфейса, передаете ее одной из этих функций WinAPI, а затем отправляете выходные данные обратно в ваш графический интерфейс.
Вы хотите сделать это на нескольких платформах, поэтому я бы предложил создать универсальный модуль (класс или пространство имен функций, в зависимости от того, что вам больше подходит), который позволяет использовать независимость от терминала ОС действующей подчиненной ОС. Затем. когда вы хотите портировать свое приложение на другую ОС, вы просто меняете реализацию этого модуля.
Примечание: Boost имеет (имел?) Разрабатываемую библиотеку, которая упростила запуск команд оболочки, Boost.Process . Но в настоящее время он находится на версии 0.4 и не обновлялся с 4 октября 2010 года (хотя его статус все еще «в работе»).