LINUX.ORG.RU

Как запустить консольную программу?

 ,


0

1

Мне нужно написать графическую программу, которая бы запускала консольную с определенными параметрами. Если я правильно понимаю, то консольные программы запускаются через терминал, т.е. Мне нужно не просто открыть файл программы, а открыть терминал и указать, чтобы он открывал эту программу?

Подскажите пожалуйста, как это сделать?


А ты у себя на винде запускал консольные программы из c++ исключительно через запуск cmd.exe ?

sdio ★★★★★
()

Если не хочешь видеть вывод «консольной программы», запускай через execl. Если хочешь, через execl запускай терминал (xterm, konsole, etc.) и ему в параметрах указывай путь и аргументы «консольной программы».

Вместо execl можешь использовать system, но про execl все равно в мане почитай.

staseg ★★★★★
()
Ответ на: комментарий от Gvidon

+ fork не забыть

Вообще-то, ТС не говорил, что ему надо сделать ещё что-то кроме запуска «консольной» программы :-)

Begemoth ★★★★★
()

Просто сделай отдельную «кнопочку» в графической программе, чтобы при её нажатии запускалась консольная. Ты на Qt или Gtk+ графику делаешь?

Urchin ★★★
()
Ответ на: комментарий от border-radius

Нужен именно запуск, чтобы программа выполняла свои действия, но без консоли. Буду гуглить execl и system. Всем огромное спасибо за ответы.

gwyllum
() автор топика
Ответ на: комментарий от vertexua

Вот поэтому и посоветовал system, если начинающему товарищу не важен ещё один висящий в фоне процесс шелла. Зы. В венде не прокатило бы, т.к. system() работает по-другому: помимо висящего процесса шелла там бы ещё нарисовалось неиллюзорное окошко самого шелла. Но там своих api-велосипедов хватает, а у нас для учебного примера system хватит с головой.

border-radius
()

man fork; man exec
man Таненбаум Э. – «Операционные системы». По крайней мере главы по этим двум вызовам

marvin_yorke ★★★
()

Хотя да, если не надо отдельным процессом запускать (т.е допустимо, что вызывающая программа на момент работы вызываемой подвиснет) то system сгодится

marvin_yorke ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.