Выполнение внешних команд - PullRequest
1 голос
/ 17 марта 2010

Я пытаюсь создать программу на C, которая представляет графический интерфейс и позволяет пользователю выбирать из списка приложений, которые нужно установить на компьютер. Я могу управлять графическим интерфейсом, но меня никогда не учили, как на самом деле выполнять команды командной строки. Я знаю, что для bash это просто apt-get install firefox, например, но как мне это сделать с C? т.е. при нажатии программа запускает apt-get install

Другая проблема в том, что я не знаю подходящего имени для этого взаимодействия, поэтому его трудно найти.

Спасибо за помощь

Ответы [ 5 ]

6 голосов
/ 17 марта 2010

Если вы используете традиционную C стандартную библиотеку, вы можете выбрать один из следующих вариантов:

  • popen() - открывает процесс с потоками ввода-вывода stdio для чтения / записи в процесс
  • system() - выполняет процесс с теми же потоками ввода-вывода, что и родительский

или

  • fork() + execl() (или варианты exec), что, по сути, представляет собой system().

Попробуйте справочные страницы по всем этим.

Также заказ Ричарда Стивенса "Расширенное программирование в среде UNIX"

0 голосов
/ 17 марта 2010

Если использование C не является обязательным, вы можете попробовать написать код на Python (Perl). Вы значительно сократите время разработки и сможете использовать модули GUI, такие как tkinter (Python) или Tk (Perl) и т. Д., Которые просты в использовании. вы сразу же включите графический интерфейс.

0 голосов
/ 17 марта 2010

Портативный способ сделать это с помощью system(). Менее переносимый, но более гибкий способ - использовать fork(), а затем exec(). Также есть popen, если вам нужно / хотите общаться с ребенком через его stdin или stdout (например, если вы хотите захватить его вывод и отобразить его в окне).

0 голосов
/ 17 марта 2010

Вы пытаетесь (1) выполнить анализ командной строки и (2) выполнить установку программного обеспечения. Вы должны знать, что apt-get является значительным мероприятием.

0 голосов
/ 17 марта 2010

Вы могли видеть, как другие люди делают это. Похоже, вы пытаетесь создать что-то похожее на Synaptic , вы можете проверить их источник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...