Я программирую на C++ с использованием Qt-4 в качестве фреймворка, учитывая каталог (например,/usr/bin), я хотел бы знать, является ли программа графическим интерфейсом или консолью заявление.Определите, является ли программа графическим или консольным приложением в Linux
Я столкнулся с некоторой информацией о том, как это сделать, а также о существовании аналогичной (для Win) идентификации в Linux (внутри эльфа). Есть ли альтернативный способ выполнения этого в Linux?
Я думал на:
- нерест каждую запись QProcess и контролировать его срок службы при условии, консольное приложение потребует некоторых входных и, как я не предусматривает какой-либо, он будет печатать stoud сообщение справки и выход. Если он жив после x секунд, я бы убил процесс и пометил его как содержащий gui. Это ужасный подход и склонность к ошибкам;
- Запустите ldd и проанализируйте вывод для любого libX или еще. Это лучший подход, хотя firefox, например, не может быть помечен как имеющий gui.
EDIT0: Этот проект является запуск приложений
EDIT1: После того, как у меня есть список программ категоризированного, я мог бы запустить эмулятор терминала, когда пользователь выбирает неграфическую приложению
ЗАКЛЮЧИТЕЛЬНОЕ ЗАКЛЮЧЕНИЕ:
После того, как люди ответили и добавили дополнительный поиск, на самом деле невозможно достоверно различать консольные и графические приложения. Лучше всего сделать несколько соображений, таких как поиск файлов .desktop, сделать несколько предположений, таких как инструменты, перечисленные в утилитах, - только такие места, как/bin,/sbin и/usr/sbin и т. Д.
Возможно, проанализируйте вывод ldd для каждой найденной записи.
Спасибо.
В Linux нет надежного способа сделать это: программа может использовать либо консоль, либо графический интерфейс по своему усмотрению (например, консольные операции консоли для конкретных аргументов командной строки, но в противном случае GUI) или даже * оба в то же время * (например, ведение журнала консоли, когда пользователь манипулирует графическим интерфейсом). Как классифицировать эти программы? ;) В любом случае, ваш вопрос выглядит как проблема [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – syam
К сожалению, я не собирался проверять мои подходы. Должен ли я удалить этот список? – Eduardo
Нет, ваш вопрос в порядке, как есть (иначе он был бы отключен). Просто я чувствую * (но я могу ошибаться), обнаруживая, использует ли программа графический интерфейс или нет, это не ваша настоящая проблема. – syam