Хранение программы фронтенд GUI и отдельная функциональность CLI

Строка с grep команда делает exit 0 если "строка" будет во входе, то иначе код выхода будет 1. Более явный путь был бы:

grep -q "string"
if [ $? -eq 0 ]
then
  exit 0
else
  exit 1
fi
4
19.02.2013, 00:49
3 ответа

Другой подход должен записать Вашу функциональность как библиотеку. Затем у Вас есть GUI, который пользуется библиотекой; и CLI, который также пользуется библиотекой. В зависимости от сложности Вашей задачи, которая может быть лучшим решением, поскольку обе программы могли работать независимо без потребности любого, отчасти предают коммуникацию процесса земле.

7
27.01.2020, 20:47
  • 1
    хороший пример этой философии, для любого рассмотрение выполнения его, был бы реализациями библиотеки GLK, используемыми для проигрывания основанных на тексте компьютерных игр. eblong.com/zarf/glk - Если документация не проясняет, каково это, попытайтесь компилировать glulxe и связать его с библиотекой GLK, и Вы получите его затем. –  Wyatt8740 17.04.2017, 00:11

Если осуществление программы является относительно не сохраняющим состояние, или это не является интерактивным, или это обычно просто работает к завершению, то первая опция является самой легкой и самой соответствующей.

Если программа с сохранением информации, или длительна, то вторая опция является самой соответствующей, хотя более сложный.

Думайте о FTP: использование curl или wget написать сценарий загрузки по сравнению с использованием expect для сценариев интерактивного сеанса FTP в каждом случае не могло бы быть корректного ответа.

Интересные случаи исследования включают:

  • nmap может обеспечить весь ее сложный полезный вывод в XML, с обратной связью во время сканирования, после того как это запустило Вас, просто должны расслабиться и ожидать
  • gpg поскольку CLI имеет долгую историю интеграции с почтовыми клиентами GUI, это использует дескрипторы файлов для ввода и вывода
  • xmlclitools имеет интересный двухмодовый режим, автономный и клиент-серверный
3
27.01.2020, 20:47

Какой язык Вы планируете использовать для GUI? Предположение C/C++ на основе system() звонить. Вы могли также использовать os.exec Python* () или os.system () функции или подобные функции на многих других языках включая просто другой сценарий оболочки, который называет Zenity, Yad или GTKDialog для взаимодействий GUI.

Использование системы C/C++ () функция имеет много протестов. Так как большинство других языковых компиляторов и интерпретаторов записаны в C/C++, их эквивалентные функции/методы обычно имеют те же проблемы. Используйте с осторожностью.

Сообщество Linux Щенка делает широкое применение GTKDialog названным из сценариев оболочки удара, так как оно поддерживает большую часть всего обычного GTK + виджеты GUI. Подобный XML код GTKDialog встроен в exportстрока сценария оболочки редактора, которая передается в вызове gtkdialog исполняемый файл. Таким образом весь код остается в том же файле.

Yad является ветвлением Zenity, который умножает GTK Zenity + возможности GUI существенно и является моим текущим предпочтительным инструментом.

Общий подход GTKDialog, Zenity и Yad...

  • Запишите сценарий оболочки, который в интерактивном режиме собирает споры с одним или несколькими вызовами к GTKDialog, Zenity или Yad (или, любые из них в этом отношении)
  • Выполните программу командной строки с собранными аргументами

Интерактивный GUI и функциональный код могли также быть в том же сценарии, с параметром командной строки для выбора GUI, CLI или API (неинтерактивного) при желании. Еще лучше было бы внутреннее обнаружение на запуске вида среды с автовыбором соответствующего интерфейса.

1
27.01.2020, 20:47

Теги

Похожие вопросы