Использование INI-файла в C в Linux

есть ли стандартный способ чтения такой конфигурации, как INI файлы для Linux с использованием C?

Я работаю над портативным компьютером на базе Linux и пишу код в C.

в противном случае я хотел бы знать о любых альтернативах.

последнее обновление:

Я исследовал и даже использовал LibConfig. Но след ноги высок и мое использование слишком просто. Итак, чтобы уменьшить след, я выкатил свой собственный реализация. Реализация не слишком универсальна, на самом деле, на данный момент довольно сопряжена. Файл конфигурации анализируется один раз во время запуска приложения и устанавливается в некоторые глобальные переменные.

7 ответов


попробовать libconfig:

простая библиотека для обработки структурированных файлов конфигурации, вроде этого:


нет, нет одного стандартного способа. Извините, но это, наверное, самый точный ответ :)

вы могли бы посмотреть на это список библиотек файлов конфигурации Linux, хотя. Это может быть полезно.


вот четыре варианта:

  1. Iniparser
  2. libini
  3. sdl-cfg
  4. RWini

Если вы можете использовать (отлично, в любом приложении на основе C) Глеб, Она имеет парсер файлов ключ-значение, которая подходит для .ini файлы-стиль. Конечно, вы также получите доступ к различным (очень хорошим) структурам данных в glib, "бесплатно".


есть обновленная вилка iniparser в ccan, первоначальный автор не смог уделить ему много внимания на протяжении многих лет. Отказ от ответственности - я поддерживаю его.

кроме того, iniparser содержит словарь, который очень полезен сам по себе.


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

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

действительно мало. Его можно использовать на врезанных системах тоже.


Я ненавижу предлагать что-то совершенно другое в предложении XML, но libexpat довольно минимален, но делает XML.

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