Откройте терминал и выполните команды через C-программирование.

Кто-нибудь знает, как открыть терминал и выполнить несколько команд с помощью программы на Си?

У меня есть программа на C и другие наборы команд, выполняемых терминалом. Мне нужно объединить их в одну программу на C.

Я использую Ubuntu 10.04.

Спасибо!

1

Решение

Проверьте «man xterm», параметр -e. Затем в C вы можете:

система («xterm -e ls»)

0

Другие решения

Ваш вопрос может вводить в заблуждение.

Поскольку вы хотите выполнить все команды терминала в c-коде, возможно, у вас фактически есть только текстовый ввод / вывод с этими командами. Если это так, вам, вероятно, не нужен терминал.


Я использую popen, когда вывод программы (терминала) является текстовым потоком. Это, вероятно, самый простой в использовании. В качестве примера:

 ...
const char* cmndStr = "ls -lsa";
FILE* pipe = popen(cmndStr, "r");
...

Команда popen выполняет команду в cmndStr, и любой текст, записанный в стандартный вывод команд (ls -lsa), перенаправляется в канал, который затем становится доступным для чтения вашей C-программой.

popen открывает отдельный процесс (но без терминала для работы, просто канал)

«Форк» — это еще один способ запуска отдельного процесса с некоторым контролем над запущенными процессами «стандартный ввод / вывод», но, опять же, я думаю, что это не терминал.


С другой стороны, если ваш вывод не является простым текстовым потоком, возможно, вы можете обойтись выделенным экраном вывода, предназначенным только для вывода, чтобы приспособиться к особой активности вывода. Например, когда я работаю с ncurses:

Я вручную открываю терминал обычным способом, а в терминале

  • выполните команду «tty», чтобы узнать имя устройства, и

  • введите «cd», чтобы установить фокус на рабочий каталог.

    dmoen @ C5: ~ $ tty

    / DEV / очки / 1

    dmoen @ C5: ~ $ cd work

    dmoen @ C5: ~ / работа $

Затем я запускаю свою программу (в другом tty) и сообщаю программе, какое устройство я хочу использовать для специального вывода (т.е. / dev / pts / 1) … Обычно я использую параметры командной строки, чтобы сообщить своей программе какие точки или дополнительные терминалы я хочу использовать, но существуют переменные окружения, каналы, перенаправление ввода / вывода и другие варианты.

Я не пытался (в последнее время) запустить терминал (как предложено smrt28), кроме как в оболочке. Я верю, что это будет работать, но я не вижу, как вывод команды терминала (ls в примере) будет доставлен обратно в вашу программу. попен тривиально доставляет текстовый поток.

Давным-давно я использовал устройство под названием «pty», которое работает как терминал, но я не помню, как его правильно подключить.


Есть набор команд ‘exec’ … см. Man exec. Чтобы подключить их обратно к вашей программе, вы, вероятно, будете работать с файлами или, возможно, перенаправлять ввод / вывод. Слишком много вариантов, чтобы перечислить здесь.


А также, возможно, вы можете соединить эти команды с вашей программой на языке c, используя каналы оболочки.

3

По вопросам рекламы [email protected]