Как передать параметры в другую программу, запускаемую из кода C/C++?
Моя ситуация:
Есть консольная программа, написанная не мной. Моя задача написать для неё "интерфейс" - другую программу, через которую будут редактироваться данные для консольной программы. Когда данные созданы/отредактированы, они сохраняются в файл, и из "интерфейса" запускается сама консольная программа. У консольной программы несколько режимов, задаваемых через пользовательский ввод.
Необходимо сделать выбор режима и запуск консольной программы из "интерфейса".
Моя идея для этого использовать функцию system(), передавая в качестве параметра в неё путь до консольной программы. Но как передать строку, выбирающую режим работы консольной программы, которая заменит пользовательский ввод.
Другими словами, как передать вводимую в консольную программу команду через system() ?
Возможно ли это сделать ? Может, лучше использовать другой способ запуска программы ?
Евгений Шатунов, Я просто-напросто не знаю, как нужно передавать параметры в эту самую строку. Т.е., если взять в пример cmd и создать папку, то нужно просто прописать, system("C:/Windows/System32/cmd mkdir directory") ?
Павел Матвеев, именно для этого люди и читают документацию. :) systemвыполняет системную команду в окружении текущего процесса. Если окружением является cmd, команда будет выполнена в cmd, если bash - то в bash. Строка команды будет передана в подключенный командный процессор, если таковой подключен. И даже в подсистеме оконных приложений Windows, system позволит тебе запустить другую программу с передачей в нее параметров запуска.
Вторым важным моментом является то, что ты ничего кардинальным образом не сломаешь если просто попробуешь свои догадки. Эксперименты с библиотечным кодом - это неотъемлемая часть освоения любой библиотеки, на ряду с чтением ее документации и, собственно, трассировкой кода. Изучай через эксперименты, документацию и отладку.
Вот ты сейчас предположил system("C:/Windows/System32/cmd mkdir directory"), а чего просто не вписал и не попробовал? Можно даже так попробовать: system( "mkdir c:\\my-test-dir" ).
И как? Работает?
Евгений Шатунов, Мой вариант - почему-то нет, а вот ваш - да.
Нужно мне уже взять за привычку читать документацию перед тем, как спрашивать)))
Теперь-то понял, что из себя представляет system(). Вопрос, полагаю, закрыт. Спасибо)
Лучше использовать system("cmd");
Также вы спокойно можете прописать пару аргументов и выполнить любую команду в cmd
Но если хотите выполнить команду, просто пишите ее в system("КОМАНДА");
Если хотите команду отправить строкой, сделайте это так
string s = "КОМАНДА";
system(s.c_str());
И не обязательно запускать cmd
Также, если приписать в конце команды >nul, вы можете скрыть ее выполнение