Практически все программы в Линукс и других Юниксах имеют два способа задания параметров: в командной строке с помощью различных опций и в специальном файле конфигурации. С первым способом все предельно ясно, используюя функцию getopt (и др) можно легко обработать параметры заданные пользователем при запуске программы. А вот второй метод...
В этом собственон и состоит вопрос "Кто как организует работу с файлом конфигурации? Существуютли какие-то стандартные методы-библиотеки организации таких файлов? Есть ли в линуксе что-то наподобие виндовыхъ ini файлов (в смысле функций работы с ними, записи ключей и их считывания)?"
файл конфигурации (создание программ с собственным файлом конфигурации)
Модератор: Модераторы разделов
-
ToniX
- Сообщения: 11
Re: файл конфигурации
IMHO, самое распространенное и стандартное решение - XML. Существуют много различных парсеров, причем в большинстве дистрибутивов и систем они есть и установлены (например, гномовский libxml2). Формат достаточно продвинут, можно легко работать со сложными древовидными конфигурациями. Да и для ручной правки он вполне удобен. К тому же, XML полезен не только для subj, но во многих других случаях, поэтому овладеть этой технологией будет отнюдь не вредно.
-
Мак Сим
- Сообщения: 231
- ОС: Ubuntu 9.04
Re: файл конфигурации
(ToniX @ May 30 2006, в 15:33) писал(а):IMHO, самое распространенное и стандартное решение - XML.
Это в линуксе то xml распространен??? Зайдите в etc. Только нектрые програмы его спользуют.
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: файл конфигурации
какого-то стандарта на конфиги a la posix не существует.
xml идёт лесом, т.к. обычно нужны конфиги представляющие собой набор не группированных опций.
библиотеки тоже нафиг не нужны, т.к. простейший конфиг - это
option_name[delimiter]value
так что парсится всё это тремя строчками в цикле.
xml идёт лесом, т.к. обычно нужны конфиги представляющие собой набор не группированных опций.
библиотеки тоже нафиг не нужны, т.к. простейший конфиг - это
option_name[delimiter]value
так что парсится всё это тремя строчками в цикле.
-
boombick
- Сообщения: 516
- Статус: Anonymous
- ОС: ArchLinux 0.8 Voodoo
Re: файл конфигурации
Ну не знаю... Я бы сказал, что обычно конфиги предоставляют собой набор негруппированных опций... А сгруппировать их было бы очень даже неплохо
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: файл конфигурации
Не буду оригинален:
В ПОИСК!
В ПОИСК!
-
Zeus
- Сообщения: 694
Re: файл конфигурации
Юзаю XML.
Не нашёл подходящего парсера - написал за пару дней свой.
Может и сырой, но парсит в DOM и сливает DOM в файл.
Со временем отладится, наберёт функциональность.
Не нашёл подходящего парсера - написал за пару дней свой.
Может и сырой, но парсит в DOM и сливает DOM в файл.
Со временем отладится, наберёт функциональность.
-
ToniX
- Сообщения: 11
Re: файл конфигурации
Asgard писал(а): ↑30.05.2006 15:53какого-то стандарта на конфиги a la posix не существует.
xml идёт лесом, т.к. обычно нужны конфиги представляющие собой набор не группированных опций.
библиотеки тоже нафиг не нужны, т.к. простейший конфиг - это
option_name[delimiter]value
так что парсится всё это тремя строчками в цикле.
В простейшем случае - конечно да. Но для мало-мальски крупного проекта (или имеющего хоть небольшой шанс стать таковым) обычно это неудачное решение. Уже для хранения настроек GUI желательно иметь иерархическую структуру. Да и редактировать крупные конфигурационные файлы куда удобнее, когда они хорошо организованы и структурированы, а не навалены одной кучей. Тем более, существует множество XML редакторов, позволяющих очень удобно работать с документами. И вопрос не только в удобстве. Зачем заново изобретать велосипед, отлаживать и сопровождать его, когда есть готовые решения? Потратить время, силы и проиграть в функциональности... Лучше это время потратить на изучение XML, окупиться с лихвой.
-
v04bvs
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: файл конфигурации
Кстати многие программы, требующие сложных настроек, реализуют их в качестве скриптов на несложных интерпретируемых языках. Примеры - fvwm, ion, vim, emacs, и др. Поэтому мне кажется - для несложных программ несложный файл конфига, для сложных - вышеописанный подход. Хотя XML наверное тоже неплох, но к сожалению "руками" редактировать более-менее сложный XML очень неудобно.
-
ToniX
- Сообщения: 11
Re: файл конфигурации
v04bvs писал(а): ↑30.05.2006 19:20Кстати многие программы, требующие сложных настроек, реализуют их в качестве скриптов на несложных интерпретируемых языках. Примеры - fvwm, ion, vim, emacs, и др. Поэтому мне кажется - для несложных программ несложный файл конфига, для сложных - вышеописанный подход. Хотя XML наверное тоже неплох, но к сожалению "руками" редактировать более-менее сложный XML очень неудобно.
XML - не панацея. Если конфигурационный файл должен содержать "активное" содержимое, типа циклов, ветвлений и т. п. , то, конечно, придется организовывать интерпретатор. Но такие задачи довольно специфичны (для текстовых редакторов, например) и относительно редки. Под сложностью конфигурационного файла я понимаю в первую очередь объем данных, в нем содержащейся, а также взаимосвязи между данными. И XML в данном случае очень неплох. Что касается сложности редактирования - то тут дело привычки. Хорошо структурированный и отформатированный документ легко понимать и редактировать. Плюс к этому существуют редакторы XML документов, позволяющие более комфортно редактировать файлы.
-
Ardzhan
- Сообщения: 57
- ОС: Debian + WinXP на виртуалке
Re: файл конфигурации
Я в своей программе использовал libconfuse (http://www.nongnu.org/confuse/), жалоб и нареканий не было, все очень удобно и гибко.
-
sdk
- Бывший модератор
- Сообщения: 210
Re: файл конфигурации
Все зависит от задач. Смотря что нужно писать/читать из конф. файла. И насколько часто.
Если простой - типа "имя=значение", то очень просто написать ручками.
К тому же, если программа пишется с использованием некой библиотеки (например, Qt, KDE), то сама библиотека может уже поддерживать работу с конфигурационными файлами.
Если простой - типа "имя=значение", то очень просто написать ручками.
К тому же, если программа пишется с использованием некой библиотеки (например, Qt, KDE), то сама библиотека может уже поддерживать работу с конфигурационными файлами.
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)